* Allow collaborators to view repo owned private org (#6965)
Handle case where an orginization is private but a user who is not a
member of the orgninization has been added as a collaborator of a repo
within that org
Fixes#6962
* Match release/v1.8 fixtures
Detect and remove a decoded BOM when showing content.
Restore the previous encoding and BOM when updating content.
On error keep as UTF-8 encoding.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* fix org visibility bug
* fix permission check
* add integration tests
* fix tests
* change test user name for easier maintainance and fix test
* fix test git repo name
* Unfortunately MemProvider Init does not actually Init properly
Worse all of its members are private and you cannot update them.
Simple fix copy it in to modules session.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix misspelling
Set Err_Interval in the context data so that the mirror interval box is
highlighted red as expected.
Clear Err_RepoName for the mirror and advanced actions. repo_name is not
set by these forms, causing auth.validate() to set the Err_RepoName
before SettingsPost is called, which would lead to the repository name
box getting erroneously highlighted red.
Fixes: https://github.com/go-gitea/gitea/issues/6396
redirect_to holds a value that we want to redirect back to after login.
This value can be a path with intentonally escaped values and we
should not unescape it.
Fixes#4475
* Use PathUnescape instead of QueryUnescape when working with branch names
Currently branch names with a '+' fail in certain situations because
QueryUnescape replaces the + character with a blank space.
Using PathUnescape should be better since it is defined as:
// PathUnescape is identical to QueryUnescape except that it does not
// unescape '+' to ' ' (space).
Fixes#6333
* Change error to match new function name
* Add new util function PathEscapeSegments
This function simply runs PathEscape on each segment of a path without
touching the forward slash itself. We want to use this instead of
PathEscape/QueryEscape in most cases because a forward slash is a valid name for a
branch etc... and we don't want that escaped in a URL.
Putting this in new file url.go and also moving a couple similar
functions into that file as well.
* Use EscapePathSegments where appropriate
Replace various uses of EscapePath/EscapeQuery with new
EscapePathSegments. Also remove uncessary uses of various
escape/unescape functions when the text had already been escaped or was
not escaped.
* Reformat comment to make drone build happy
* Remove no longer used url library
* Requested code changes
* Add lang specific font stacks
* Force font changes
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix icons
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix octicons and icons
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Just override the semantic ui fonts only
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Missed the headers... override them too
* Missed some more semantic ui stuff
* Fix PT Sans
Signed-off-by: Andrew Thornton <art27@cantab.net>
* More changes
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Squashed commit of the following:
commit 7d1679e9079541359869c9e677ba7412bfcc59f3
Author: Mike L <cl.jeremy@qq.com>
Date: Wed Mar 13 13:53:49 2019 +0100
Remove missed YaHei leftover from _home.less
commit 0079121ea91860a323ed4e5cc1a9c0d490d9cefd
Author: Mike L <cl.jeremy@qq.com>
Date: Wed Mar 13 12:03:54 2019 +0100
Fix overdone fixes (inherit, :lang)
commit 62c919915928ec1db4731d547e95885f91a0618d
Author: Mike L <cl.jeremy@qq.com>
Date: Wed Mar 13 02:29:10 2019 +0100
Fix elements w/ explicit lang (language chooser)
commit b3117587aa2eb8570d60bed583a11ee5565418be
Author: Mike L <cl.jeremy@qq.com>
Date: Tue Mar 12 20:17:26 2019 +0100
Fix textarea also (to match body)
commit 81cedf2c3012c4dd05a7680782b4a98e1b947f67
Author: Mike L <cl.jeremy@qq.com>
Date: Tue Mar 12 19:41:39 2019 +0100
Revert css temporarily to fix conflict
commit 80ff82797f3203cbeaf866f22e961334e137df89
Author: Mike L <cl.jeremy@qq.com>
Date: Tue Mar 12 19:15:30 2019 +0100
Tweak CJK, fix Yu Gothic, more monospace inherits
commit 581dceb9a869646c2c486dabb925c88c2680d70c
Author: Mike L <cl.jeremy@qq.com>
Date: Mon Mar 11 13:09:26 2019 +0100
Add Lato for latin extd. & cyrillic, improve CJK
* update stylesheet
* add scripts/test-local.sh and fix CONTRIBUTING.md
- fixes#6243
- partial fix for #6269
Signed-off-by: Steve Traugott <stevegt@t7a.org>
* remove reference to possible automated drone run
* remove bash version of drone-cli test script
* fix issue number links in testing instructions
* remove scripts/test-local.sh
* Fix ParsePatch to work properly with quoted diff --git string
Currently ParsePatch fails when a diff contains a quoted diff line like:
diff --git "a/file" "b/file"
This patch makes it properly parse the line when that happens.
Fixes#6309
* Add test for regular case while here
* Simplify string modification
* Use url.PathEscape to escape the branchname
* GetRepositoryByOwnerAndName should also have url.PathEscape as the owner and reponame are provided by the client
* Replace linkRegex with xurls library
Rather than maintaining a complicated regex to match URLs for
autolinking, gitea can use this existing go library that takes care of
the matching with very little code change to gitea itself. After
spending a while trying to find the perfect regex for all cases this library
still works better as it is more flexible than a single regex ever will be.
This will also fix the following issues: #5844#3095#3381
This passes all our current tests and I've added new ones mentioned in
those issues as well.
* Use xurls.StrictMatchingScheme instead of xurls.Strict
This is much faster and we only care about https? links to preserve
existing behavior.
The visitLinksForShortLinks feature would look inside of an <a> tag and
run shortLinkProcessorFull on any text, which attempts to create links
out of potential 'short links' like [[test]] [[link|example]] etc...
This makes no sense because you can't have nested links within an <a>
tag. Specifically, the html5 standard says <a> tags can't include
interactive content if they contain the href attribute:
http://w3c.github.io/html/single-page.html#the-a-element
And also defines an <a> element with a href attribute as interactive:
http://w3c.github.io/html/single-page.html#interactive-content
Therefore you can't really put a link inside of another link. In
practice none of this works anyways since browsers won't render it, it
would probably be broken if they tried, and it is causing a bug
(#4946). No current tests rely on this behavior either.
This removes the feature and also explicitly excludes the
current visitNodeForShortLinks from looking in <a> tags.
In #6211, we started creating repo_redirects for ownership transfers,
however that opens an edge case where a user might perform the
following sequence:
rename org1/repo1 -> org1/repo2 (creates org1/repo1 redirect)
transfer org2/repo1 -> org1/repo1 (org1/repo1 redirect continues to exist)
rename org1/repo1 -> org1/repo3 (fails due to existing org1/repo1 redirect)
This change ensures that each time we rename or transfer a repo,
we delete any existing redirects at the target location. This
already happens when a new repo is created. By doing this we ensure
that we'll never have both a repo and a redirect at the same location.
Signed-off-by: James E. Blair <jeblair@redhat.com>
Modify the current linkRegex to require http|https which appears to be
the intended behavior based on the comments. Right now, it also matches
anything starting with www as well. Also add testing for linkRegex
When transferring ownership of a repo to a different user/org,
create a repo redirect that points to the new location in the same
way that is done when a repo is renamed.
Signed-off-by: James E. Blair <jeblair@redhat.com>
* Added Go Path and node_modules to PATH
* Uses npx now for generate-stylesheets
* Uses `go env GOPATH` to calculate adding GOPATH/bin to PATH
* Added note about installing Node 8.0+ to generate stylesheets
* Added preferred Node version to CONTRIBUTING.md
* Remove all CommitStatus when a repo is deleted
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Minor UI tweaks (#5782)
Added 'No License' option
Added link and octicon change for external issue trackers
Reset password now notifies right away if the code is invalid
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* More UI tweaks
More info in PR
* Generate stylesheet for arc-green
* Make gofmt work
* Change PR integration since the button is changed
* Rebase
* Generate stylesheet
* UI updates
Made the PR button a "basic" button
Vertically centered the issue checkboxes
Labels will update only once after modal is closed
* Commit to reference related issues
Resolves#5782Resolves#5861
Addresses original question in #5993
* Change the comment wording since PR button is no longer little and green.
* Revert changes that made Windows work
* Regenerate stylesheet
* Regenerate stylesheets
* make generate-stylesheets
* Update integration again, changed button style
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Added ID to PR button
Changed integration to use the ID to avoid breaking in the future
* Added missing semi-colons
* Added back distinction between issue actions and filters (overlooked it before)
Moved action button over next to other action dropdowns
* Remove extra tab formatting in list.tmpl
* Remove more formatting from GoLand
* Replace hardcoded "No License" with i18n license helper.
* Show email if the authenticated user owns the profile page being
requested for.
Also removed `setting.UI.ShowUserEmail` as it's documentation says it
only controls the email setting on the explore page
* fix current user check... This prevents a panic as a user must be signed in before ctx.User is called
* fix panic in tests
* try to fix tests
* Update year
* Test CI fail
* Revert change
* User 3 is not allowed to authorize
* Set user2 email to be private
* Change to user4 in explore page as user2 now has private email option set
Similar to Github and other git hosting sites, sort the user's repos on
the dashboard by last updated rather than alphabetically. An alphabetic
sort isn't very useful once a user has more than 15 repos and wants
quick access to recent ones that aren't in the first part of the alphabet.
* update bleve to master b17287a86f6cac923a5d886e10618df994eeb54b6724eac2e3b8dde89cfbe3a2
* remove unused pkg from dep file
* change bleve from master to recent revision
* Add emoji to labels
Minor cleanup of tribute code in footer.tmpl
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Quick find/replace in other i18n files containing label translations
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Revert "Quick find/replace in other i18n files containing label translations"
This reverts commit ec3e1a3a1775989301bb2c1cd08e8871b317688d.
* Add style to overwrite emoji height in labels
* Revert Makefile change that makes Windows work
* Update and expand building information
Signed-off-by: Andrew Thornton <art27@cantab.net>
* remove extraneous extra line
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix spelling mistake
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Note about documentation for the website
Signed-off-by: Andrew Thornton <art27@cantab.net>
* More changes
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Clarified the automatic build dependency
* Update the from-source to match the hacking information
* Extend quotes
* Update required go and discord link
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Update hacking-on-gitea.en-us.md
Add in information about postcss
This PR makes it possible for the markdown renderer to render images and media straight from the LFS.
Fix#5746
Signed-off-by: Andrew Thornton [art27@cantab.net](mailto:art27@cantab.net)
* Use git plumbing for upload: #5621 repo_editor.go: UploadRepoFile
* Use git plumbing for upload: #5621 repo_editor.go: GetDiffPreview
* Use git plumbing for upload: #5621 repo_editor.go: DeleteRepoFile
* Use git plumbing for upload: #5621 repo_editor.go: UploadRepoFiles
* Move branch checkout functions out of repo_editor.go as they are no longer used there
* BUGFIX: The default permissions should be 100644
This is a change from the previous code but is more in keeping
with the default behaviour of git.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Standardise cleanUploadFilename to more closely match git
See verify_path in: 7f4e641693/read-cache.c (L951)
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Redirect on bad paths
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Refactor to move the uploading functions out to a module
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add LFS support
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Update upload.go attribution header
Upload.go is essentially the remnants of repo_editor.go. The remaining code is essentially unchanged from the Gogs code, hence the Gogs attribution.
* Delete upload files after session committed
* Ensure that GIT_AUTHOR_NAME etc. are valid for git
see #5774
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add in test cases per @lafriks comment
* Add space between gitea and github imports
Signed-off-by: Andrew Thornton <art27@cantab.net>
* more examples in TestCleanUploadName
Signed-off-by: Andrew Thornton <art27@cantab.net>
* fix formatting
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Set the SSH_ORIGINAL_COMMAND to ensure hooks are run
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Switch off SSH_ORIGINAL_COMMAND
Signed-off-by: Andrew Thornton <art27@cantab.net>
* fixes#5957
* add tests to make sure config option is respected
* use already defined struct
* - use migration to make the flag repo wide not for the entire gitea instance
Also note that the config value can still be set so as to be able to control the value for new repositories that are to be created
- fix copy/paste error in copyright header year and rearrange import
- use repo config instead of server config value to determine if a commit should close an issue
- update testsuite
* use global config only when creating a new repository
* allow repo admin toggle feature via UI
* fix typo and improve testcase
* fix fixtures
* add DEFAULT prefix to config value
* fix test
* Create repository on organisation by default on its dashboard
* Only show owners the add new repositories to an organisation button.
Fix#3253
Signed-off-by: Andrew Thornton <art27@cantab.net>
* UI: Make dashboard navbar full-width
* more tweaks: full-width footer and consistent padding
* fix page layout causing unneccesary scrollbars on small pages
* use native golang SSH library but ssh-keygen when enable built-in SSH server to remove dependent on that command lines
* fix tests and add comment head
We're working on rolling out gitea as a replacement for a fairly
large cgit installation. Part of this involves a metric ton of
mod_rewrite rules so that links people have out in the wild will
still work. Unfortunately, cgit uses #n1 in the url to indicate
a single line highlight, which doesn't get passed to the server
and therefore can't be rewritten.
We've got a local workaround by shoving a script block into a
custom header template, but thought it might be nicer to upstream
a simple patch to support #n as a prefix for single line highlights.
(luckily for simplicity, cgit does not support ranges)
Signed-off-by: Monty Taylor <mordred@inaugust.com>
* Feature - Pagination for git tree API
* Handles case when page is negative
* Does a for loop over the start and end rather than all entries
* Removed redundent logic
* Adds per_page as a query parameter
* Adds DEFAULT_GIT_TREES_PER_PAGE for settings, ran make fmt
* Fix typo in cheat-sheet en
* Makes page start at 1, generated swagger
* Use updates to SDK
* Updates to use latest sdk
* Updates swagger for tree api
* Adds test for GetTreeBySHA
* Updates per PR reviews
* Updates per PR reviews
* Remove file
* Formatting
* Fix to swagger file
* Fix to swagger
* Update v1_json.tmpl
* Fix to swagger file
- Don't show divider below heatmap when it's hidden via media-query
- Make divider between user menu adhere to container width
- Remove excessiv margins on heatmap
* Fix serving of raw wiki files other than .md
Closes#4690.
Closes#4395.
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Simplify code at routers/repo/wiki.go
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Add more files to user2/repo1.wiki for testing
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Update macaron to v1.3.2
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Add tests for WikiRaw
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Fix NewResponseWriter usage due to macaron update
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* Add raw to reserved wiki names
Signed-off-by: Gabriel Silva Simões <simoes.sgabriel@gmail.com>
* UI: Repo header tweaks
- Use basic buttons on the header buttons, matching gogs
- Make 'Manage topic' text smaller, remove margin-left with no topics
present
- Move various inline styles to CSS
- Use flexbox on header title and buttons
* fix indentation
* reverse media query wrapping
* fix inconsisten whitespace
* Don't display buttons if there are no notices
* clear stopwatch on merging a PR
* remove redundant gt check
* use ctx.Flash as per @bkcsoft comment
* stop timer on closing issues/PRs too
* updated translation as per review
* redirect to login page after successfully activating account
* remove unrelated changes
* stop timer for issues that are closed via commits too..Not just the 'close' UI button
* Revert #5877
This unfortunately was not the solution.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Change permission check to create pull requests to CanReadIssuesOrPulls
Signed-off-by: Andrew Thornton <art27@cantab.net>
1. A key can either be an ssh user key or a deploy key. It cannot be both.
2. If a key is a user key - it can only be associated with one user.
3. If a key is a deploy key - it can be used in multiple repositories and the permissions it has on those repositories can be different.
4. If a repository is deleted, its deploy keys must be deleted too.
We currently don't enforce any of this and multiple repositories access with different permissions doesn't work at all. This PR enforces the following constraints:
- [x] You should not be able to add the same user key as another user
- [x] You should not be able to add a ssh user key which is being used as a deploy key
- [x] You should not be able to add a ssh deploy key which is being used as a user key
- [x] If you add an ssh deploy key to another repository you should be able to use it in different modes without losing the ability to use it in the other mode.
- [x] If you delete a repository you must delete all its deploy keys.
Fix#1357
The gitea prerecieve and postrecieve hooks and the gitea PushUpdate function require that the PusherID and PusherName are real users. Previously, these environment variables were not being set when using a deploy key - the main result being that pushing to empty repositories meant that is_empty status was not changed.
I've also added an integration test to ensure that the is_empty status is updated on pushing with a deploy key.
There is a slight issue in that the deploy key is now considered a proxy for the owner - we don't have a way of separating out the deploy key from the owner at present. This can be fixed in another PR.
Fix#3795
Signed-off-by: Andrew Thornton art27@cantab.net
By default, if `setting.NewContext()` prints out any warning logs, these are printed to the stdout breaking `git receive-pack` etc. meaning that even if there is a warning because of a minor problem in your app.ini but gitea starts despite this - you **CANNOT** push or pull over SSH.
This PR disables the console logger whilst in `serv.go`
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Create log mailer for testing email settings
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Switch on the log mailer for the integration tests
This ensures that the sending mail process works
Signed-off-by: Andrew Thornton <art27@cantab.net>
* rename the from user for mysql/mssql
* rename log sender to dummy sender
* update the integration tests
Wrapping was initially added in https://github.com/go-gitea/gitea/pull/2789
but it is currently disabled because the rule that applies wrapping to
the wrap class did not have enough CSS specificity.
Resolved the issue by using a general selector that matches all code
boxes. The previous wrap class was removed because it had only been
inconsistenly applied to various code boxes and because I found no easy
way to add classes to code boxes rendered in Markdown.
Also removed a seemingly useless :before on code view and added padding
to restore the spacing.
This PR protects against the panic referred to in chaseadmsio/goorgeous#82
by recovering from the panic and just returning the raw bytes if
there is an error.
Signed-off-by: Andrew Thornton <art27@cantab.net>
This PR gitea'ises the macaron.Recovery() handler meaning that in
the event of panic we get proper gitea 500 pages and the stacktrace
is logged with the gitea logger.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* don't allow pull requests to be created on an archived repository
Also disable the "PR" button if the repo is archived
* Refuse creating an issue/PR via API calls too
Previous code could potentially dereference nil - this PR ensures
that the poster is loaded before dereferencing it.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add migration test
This commit adds a simple migration test for v1.5.3, v1.6.4 and v1.7.0-rc3
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Automigrate based on available dbs
* remove old ini file
* Standardise the dialect names
Add a new config option to enable / disable the automatic watching of
repos for new repositories and if a user is added to a team.
Fixes#653
Signed-off-by: Sebastian Sauer <sauer.sebastian@gmail.com>
Move input fields to the top so no scrolling is needed to add
new members / repos to a team.
Signed-off-by: Sebastian Sauer <sauer.sebastian@gmail.com>
* Ensure valid git author names passed in signatures
Fix#5772 - Git author names are not allowed to include `\n` `<` or `>` and
must not be empty. Ensure that the name passed in a signature is valid.
* Account for pathologically named external users
LDAP and the like usernames are not checked in the same way that users who signup are.
Therefore just ensure that user names are also git safe and if totally pathological -
Set them to "user-$UID"
* Add Tests and adjust test users
Make our testcases a little more pathological so that we be sure that integration
tests have a chance to spot these cases.
Signed-off-by: Andrew Thornton <art27@cantab.net>
Updates documentation to account for the renamed ENABLE_SWAGGER_ENDPOINT from #3572 (commit a74426d631)
Signed-off-by: Peter Colberg <peter@colberg.org>
* Optimize pulls merging
By utilizing `git clone -s --no-checkout` rather than cloning the whole
repo.
* Use sparse-checkout to speedup pulls merge
* Use bytes.Buffer instead of strings.Builder for backward compatibility
* Fix empty diff-tree output for repos with only the initial commit
* Fix missing argument for the format string
* Rework diff-tree-list generation
* Remove logging code
* File list for sparse-checkout must be prefix with /
Otherwise, they would match all files with the same name under
subdirectories.
* Update onto the rebased head
* Use referecen repo to avoid fetching objects
* Pooled and buffered gzip implementation
* Add test for gzip
* Add integration test
* Ensure lfs check within transaction
The previous code made it possible for a race condition to occur whereby a LFSMetaObject could be checked into the database twice. We should check if the LFSMetaObject is within the database and insert it if not in one transaction.
* Try to avoid primary key problem in postgres
The integration tests are being affected by
https://github.com/go-testfixtures/testfixtures/issues/39 if we set the
primary key high enough, keep a count of this and remove at the end of
each test we shouldn't be affected by this.
* add util method and tests
* make sure the title of an issue cannot be empty
* wiki title cannot be empty
* pull request title cannot be empty
* update to make use of the new util methof
Unfortunately a scoping problem was missed on the previous PR which meant that the only nil error was logged on failure to connect to the db. This pr fixes this.
Unfortunately the last fix didn't completely fix the migration to v79 of the db
due to bug with schema locking during Sync2. This should fix this issue.
Fix#5759
Signed-off-by: Andrew Thornton <art27@cantab.net>
Fix#5765 by log the IP address of a connecting remote machine in case of a SSH connection error for the built-in ssh server.
Signed-off-by: Robert Sprunk <github@sprunk.me>
* api: Add an endpoint to list a particular member of team.
* models: Rename `GetUserTeams()` to `GetUserOrgTeams()` in `org_team` model.
`GetUserTeams()` sounds a bit misnomer since it actually returns
the teams that user belongs to in a given organization rather than
all the teams across all the organization that the user has joined.
* models: Add `GetUserTeams()`.
Returns all the teams that a user belongs to.
* api: Add an endpoint for GET '/user/teams'.
A GET request to this endpoint lists all the teams that a user
belongs to.
* add default PR title
Set default PR title to commit summary if there's a single commit on the head branch, else set it to the head branch name
* set default PR description
If there's a single commit on the head branch, and it's multiline, then set it as the default PR description
* Format boolean values to true/false even when it is returned as byte-slice,
* Fix the sequence generation, the proper sequence name is used (instead of 'table_id_seq'), and fix the next value be max+1 always
* Fixed deadlock in CreateComment
* Fix possible deadlock in UpdateIssueDeadline from createDeadlineComment
* Ensure that calls to IsTimeTracker enabled are called within session
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Ensure that calls to reactionList are also called within session
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Ensure all calls in NewPullRequest with the session are called within the session
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Deal with potential deadlocks in repo
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Ensure that isStaring is checked within our transaction
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix mistake in isOrganizationMember
Sorry.
* Do not display the raw OpenID error in the UI
If there are no `WHITELIST_URIS` or `BLACKLIST_URIS` set in the openid
section of the app.ini, it is possible that gitea can leak sensitive
information about the local network through the error provided by the
UI. This PR hides the error information and logs it.
Fix#4973
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Update auth_openid.go
Place error log within the `err != nil` branch.
* add migration and basic UI for changing a user's theme
* update user themem
* use right text on button
* load theme based on users' selection
* load theme based on users' selection in pwa too
* update sample config
* delete older theme loading
* implement AfterLoad to set users' theme properly
* set up default theme when creating a user. This uses the installation wide theme
* use flash messages for error
* set default theme when creating a user from the cli
* fix @lunny review
* Fix sqlite deadlock when assigning to a PR
Fix 5639
Signed-off-by: Andrew Thornton <art27@cantab.net>
* More possible deadlocks found and fixed
Signed-off-by: Andrew Thornton <art27@cantab.net>
[https-setup]
- Made it clearer that HTTP redirection is possible
[config-cheat-sheet]
- Clarified the behavihour of the redirection-related config keys
* Add changelog for 1.7.0-rc1
* Change position of refactoring of heatmap
* Refactoring some items in changelog
* Fix wrong PR title in changelog
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Remove backported PRs
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix wrong date
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add new PR to list
* Security fixes have been backported
* comments: Fix an incorrent DOM element selection.
This commit fixes a bug that was causing text from previously edited
comment to get saved when two comments were edited one after other.
Text area with id of `#content` isn't unique on the page but it was
being treated as unique by the event handling code.
Fixes: #5581.
* templates: Remove `id` from textarea in commit edit form.
An element is assigned an `id` only if it is unique for the whole page
but in this case there can be multiple textarea so it should have one.
There are likely problems remaining with the way that initCommentForm
is creating its elements. I suspect that a malformed avatar url could
be used maliciously.
* Added test environment for m$sql
* Added template for test environment for m$sql
* Fix password
* Fix password (again)
* Fix password (again again)
* Fix db
* Ci trigger (Looking at you drone....)
* Ci trigger (Looking at you drone....)
* Ci trigger (Looking at you drone....)
* Ci trigger (Looking at you drone....)
* Create master database for mssql integration tests
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Create database only if master do not exist
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix mssql integration tests by using custom database "gitea"
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Moved defer
* bump xorm
* updated xorm
* Fixed build
* Fix the Let's Encrypt handler by listening on a valid address
Also handle errors in the HTTP server go routine, return a fatal error
when something goes wrong.
Thanks to @gbl08ma for finding the actual bug
Here is an example of the error handling:
2018/12/11 14:23:07 [....io/gitea/cmd/web.go:87 func1()] [E] Failed to
start the Let's Encrypt handler on port 30: listen tcp 0.0.0.0:30: bind:
permission denied
Closes#5280
* Fix a typo
* Add branch protection for approvals
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add required approvals
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add missing comments and fmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add type = approval and group by reviewer_id to review
* Prevent users from adding negative review limits
* Add migration for approval whitelists
Signed-off-by: Jonas Franz <info@jonasfranz.software>
MSSQL is using the wrong type here which results in a strconv.ParseInt: parsing "2018-12-07T00:00:00Z": invalid syntax error.
The added datediff(SECOND, '19700101', x) results in the unix timestamp to be returned.
Signed-off-by: Christopher Dziomba <christopher.dziomba@gmail.com>
* improve team members and repositories settings UI
* use tab on team pages
* add default description on team members and repos
* add blank on numbers and texts
* improve translation
* remove old git-version from git-scm url in app.ini
The url includes the version of git, which is not required to view the
page. If you open the page without the version you get the current
version and it's possible to switch the used version.
Signed-off-by: Roman <romaaan.git@gmail.com>
* docs: mention the git-scm url for git configs
Signed-off-by: Roman <romaaan.git@gmail.com>
right now the `closed_at` field for json responses is not filled during
the `APIIssue` creation for api responses.
For a closed issue you get a result like:
```json
"state":"open","comments":0,"created_at":"2018-11-29T16:39:24+01:00",
"updated_at":"2018-11-30T10:49:19+01:00","closed_at":null,
"due_date":null,"pull_request":null}
```
which has no information about the closing date. (which exists in the
db and ui)
with this PR the result changes to this:
```json
:null,"assignee":null,"assignees":null,
"state":"closed",
"comments":0,"created_at":"2018-11-29T16:43:05+01:00",
"updated_at":"2018-12-02T19:17:05+01:00",
"closed_at":"2018-12-02T19:17:05+01:00",
"due_date":null,"pull_request":null}
```
fixes: https://github.com/go-gitea/gitea/issues/5446
Signed-off-by: Roman <romaaan.git@gmail.com>
* added the ability to provide an empty array at the EditPullRequests API to remove all labels
Signed-off-by: Lucien Kerl <lucien.kerl@wuerth-it.com>
* Update pull.go
right now, the url is displayed with an anchor tag with no classes. If
the url is really really long, the url will break out of the containing
div and (depending on the url length) the browser shows the horizontal
scrollbar.
This pr makes use of the already existing css class `dont-break-out`
which gives all the anchor the necessary properties to prevent the
break.
Another solution could be to introduce some classes like
`text text-break-word`, but that would duplicate the `dont-break-out`
class just for text elements that use the `text` class.
fixes: https://github.com/go-gitea/gitea/issues/5416
Signed-off-by: Roman <romaaan.git@gmail.com>
the ssh port is optional during the installation process. The
translations even mention that it is optional and can be blank. Right
now it has the `required` class which creates the red `*` behind the
field caption - used for required fields.
If you leave it blank, the SSH option is disabled
(not touched by this PR)
Signed-off-by: Roman <romaaan.git@gmail.com>
* add milestone issues and pulls page instead of redirecting issues page
* add milestone when creating issue from milestone page
* refactor to merge similiar codes as a new function issues
* remove milestone info on milestone issues list
* fix missing params
* Explicitly disable Git credential helper
If the user running Gitea has configured a credential helper, Git
credentials might leak out of Gitea.
There are two problems with credential helpers when combined with Gitea:
1. Credentials entered by a user when doing a migration or setting up a
mirror will end up in the credential store. In the worst case, this
is the plain text file ~/.git-credentials.
2. Credentials in the credential store will be used for migrations and
mirrors by all users. For example, if user A sets up a mirror, their
credentials will be stored. If user B later sets up a mirror from the
same host and does not enter any credentials, user A's credentials
will be used.
This PR prepends -c credential.helper= to all Git commands to clear the
list of helpers. This requires at least Git version 2.9, as previous
versions will try to load an empty helper instead. For more details, see
24321375cd
* Update git module
* Inital routes to git refs api
* Git refs API implementation
* Update swagger
* Fix copyright
* Make swagger happy add basic test
* Fix test
* Fix test again :)
* Create manifest and serviceworker
* Create templates and add AppSubUrl
* Add JSRenderer
* fix ctx type
* Add JSRenderer to static.go
* Complete adding {{AppSubUrl}}
* Add more fonts to urlsToCache
* Add 512px and 192px icons
* Hardcode font MD5
* Default theme doesn't have a specific CSS file
* show only opened milestones on issues page milestone filter
* update Godoc
* update Godoc everywhere
* update swagger
* use false instead of 0
* Add seccond ordering by ID for milestones where no deadline is set
* don't force a password change for the admin user
* don't totally dicard -must-change-password flag if creating the first (admin) user via the cli. Use flag if present but make sure to default to not forcing a password update
* add api for user to create org
* remove unused blank line on the swagger file end
* fix create and add test
* fix tests
* fix routes of create org API
* fix bug
* add copyright heads
* Add raw blob endpoint
This should make it possible to download raw blobs directly from
/:repo/:username/raw/blob/:sha1 URLs.
* fix: Make it work
* As an SHA-ID is no path getRefNameFromPath can't be used to verify
file specifying parameter
* added relevant change in go-gitea/git #132
Signed-off-by: Berengar W. Lehr <Berengar.Lehr@kompetenztest.de>
* Update Gopkg.lock
Can't update all vendors due to errors
Signed-off-by: Berengar W. Lehr <Berengar.Lehr@kompetenztest.de>
* style: Add Gitea copyright header
* feat: Added integration test for /repo/u/r/raw/blob
* fix: correct year in copyright header
* Remove field from migration to support upgrades from older version
That will ensure the field does not get queried in the Select if it does
not exist yet:
```
[I] [SQL] SELECT "id", "repo_id", "index", "poster_id", "name", "content", "milestone_id", "priority", "assignee_id", "is_closed", "is_pull", "num_comments", "ref", "deadline_unix", "created_unix", "updated_unix
[...itea/routers/init.go:60 GlobalInit()] [E] Failed to initialize ORM engine: migrate: do migrate: pq: column "ref" does not exist
```
see #5318
* Skip remove stale watcher migration if not required
Otherwise the migration will fail if executed from a older database
version without multiple IssueWatch feature.
```
2018/11/11 23:51:14 [I] [SQL] SELECT DISTINCT "issue_watch"."user_id", "issue"."repo_id" FROM "issue_watch" INNER JOIN issue ON issue_watch.issue_id = issue.id WHERE (issue_watch.is_watching = $1) LIMIT 50 []int
[...itea/routers/init.go:60 GlobalInit()] [E] Failed to initialize ORM engine: migrate: do migrate: pq: relation "issue_watch" does not exist
```
see #5318
* Update dep github.com/markbates/goth
* Update dep github.com/blevesearch/bleve
* Update dep golang.org/x/oauth2
* Fix github.com/blevesearch/bleve to c74e08f039e56cef576e4336382b2a2d12d9e026
* Update dep golang.org/x/oauth2
* Add CSRF checking to reqToken and place CSRF in the post for deadline creation
Fixes#5226, #5249
* /api/v1/admin/users routes should have reqToken middleware
* Add private information to the deploy keys api
This commit adds more information to the deploy keys to allow for back
reference in to the main keys list. It also adds information about the
repository that the key is referring to.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add private information to the user keys API
This adjusts the keys API to give out private information to user keys if
the current user is the owner or an admin.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add ability to search keys by fingerprint
This commit adds the functionality to search ssh-keys by fingerprint of
the ssh-key. Deploy keys per repository can also be searched. There is
no current clear API point to allow search of all deploy keys by
fingerprint or keyID.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add integration test
* fix: Accept web-command cli flags if web-command is commited
* Added flags of default cmd CmdWeb to app-wide flags
* If command *is* specified app-wide flags are ignored
Resolves: #5065
Signed-off-by: Berengar W. Lehr <Berengar.Lehr@kompetenztest.de>
* Removed style breaking newline
* broken windows need to be fixed
* provides requested change
* Fix issue where ecdsa and other key types are not synced from LDAP authentication provider fixes#5092
* integrations/auth_ldap_test.go: Add Hermes Conrad new ecdsa-sha2-nistp256 publickey fingerprint
* integrations/auth_ldap_test.go: Use ssh-keygen -lf <filename> -E sha256
* Pass environment variables for URL prefixes to external markup parser
Signed-off-by: Nicolas Lenz <nicolas@eisfunke.com>
* Document external markup link prefix environment variables
Signed-off-by: Nicolas Lenz <nicolas@eisfunke.com>
* Run format on link prefix changes
Signed-off-by: Nicolas Lenz <nicolas@eisfunke.com>
* Show either sign up OR sign in
* disambiguate fresh start from adding recovery options
* use tabs to switch between account link flows
* add active to tab body as well
* changes as per discussion
* handle specific error; fix missing err typo
Hi,
I'm the guy who translated gitea during June in Italian.
I would like to have my name added to the translators list.
I translated nearly a thousand and a half words.
Thank you.
* Added basic heatmap data
* Added extra case for sqlite
* Built basic heatmap into user profile
* Get contribution data from api & styling
* Fixed lint & added extra group by statements for all database types
* generated swagger spec
* generated swagger spec
* generated swagger spec
* fixed swagger spec
* fmt
* Added tests
* Added setting to enable/disable user heatmap
* Added locale for loading text
* Removed UseTiDB
* Updated librejs & moment.js
* Fixed import order
* Fixed heatmap in postgresql
* Update docs/content/doc/advanced/config-cheat-sheet.en-us.md
Co-Authored-By: kolaente <konrad@kola-entertainments.de>
* Added copyright header
* Fixed a bug to show the heatmap for the actual user instead of the currently logged in
* Added integration test for heatmaps
* Added a heatmap on the dashboard
* Fixed timestamp parsing
* Hide heatmap on mobile
* optimized postgresql group by query
* Improved sqlite group by statement
* Fix Swagger JSON.
Remove unnecessary schema references for the forbidden and empty responses
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix swagger API for CreateAccessToken
* Fix admin create org swagger
* Fix swagger for adminCreateRepo
* More swagger fixes
Set int64 format for those which are int64
Some more form fixes
* Fix swagger description of GET /repos/{owner}/{repo}/pulls
`show` is keyword in MySQL and has to be quoted to reference a column name. Use grave accents (ASCII code 96) for quoting to match rest of the source code. It's non-standard SQL, but it's supported by SQLite and MySQL.
Signed-off-by: Filip Navara <navara@emclient.com>
* add support for an admin to force a user to change his/her password from thee cli
* use BoolFlag instead
* default to true
* simplify by removing unnneccessary if/else
* fix fading menu in arc-green theme
the menu faded white because it missed proper styling.
only visible on viewports narrower than 1200px.
* Generate minimized css
* compiled arc-green.less to apply changes from 76e4f9a58
Commit 7bb4d610e5 tries to take the app_name from the locale, however, it is a user defined setting. This causes the app name to simply display as `app_name` instead of the correct value.
templates/helper.go automatically injects the AppName variable into every template, so we can safely use that instead.
Signed-off-by: Daniel Derzsi <daniel@tohka.us>
* add notification interface and refactor UI notifications
* add missing methods on notification interface and notifiy only issue status really changed
* implement NotifyPullRequestReview for ui notification
* Hide outdated comments in file view
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add unit test by adding "invalidated" comment to fixtures
Signed-off-by: Jonas Franz <info@jonasfranz.software>
Current docs demonstrate how to configure a database container but don't
explicitly specify that you should add additional environment variables
to the Gitea container to make it use the database. This just
demonstrates the changes required.
Signed-off-by: Dane Elwell <dane.elwell@ukfast.co.uk>
* Detect charset and convert non UTF-8 files for display
* Refactor and move function to correct module
* Revert unrelated changes
* More unrelated changes
* Duplicate content for small text to have better encoding detection
* Check if original content is valid before duplicating it
* Fix layout of the topic edit.
- made right-hand column wider so that it has enough space for "Done" button.
- fixed issue that jQuery's .show() breaks functionality of the Semantic UI Grid.
* Improve switching visibility of the topic edit
Changes to support old browsers that doesn't support 'flex' keyword.
- Removed style "display: none" from index.css so that
the grid can be displayed without specifying new "display" style.
- Added style "display:none" to the grid element in HTML template
as the initial style.
- In index.js, visibility of the grid element is changed by
set "display:none" style to the element or removing it from the element.
opening issues generates a webhook to discord that contains
a url to the gitea api. the message title in discord is therefore
referencing to the api instead of the issue itself.
* Code review UI improvements
* More fixes to dark theme
* Style fix
* Fix to allow add code review comments only on review files tab
* More readability dark style fixes
* Fix commenting on deleted files. Fixes#4752
* Fix line blame getting for multiple corner cases
* redirect to login page after successfully activating account
* force users to change password if account was created by an admin
* force users to change password if account was created by an admin
* fixed build
* fixed build
* fix pending issues with translation and wrong routes
* make sure path check is safe
* remove unneccessary newline
* make sure users that don't have to view the form get redirected
* move route to use /settings prefix so as to make sure unauthenticated users can't view the page
* update as per @lafriks review
* add necessary comment
* remove unrelated changes
* support redirecting to location the user actually want to go to before being forced to change his/her password
* run make fmt
* added tests
* improve assertions
* add assertion
* fix copyright year
Signed-off-by: Lanre Adelowo <yo@lanre.wtf>
ENABLE_LETSENCRYPT and LETSENCRYPT_ACCEPTTOS were not being properly loaded from the config file, always resulting in the default settings being in place.
This change makes it easier to customize the header and footer content. Before this change, the whole header and footer had to be overridden, including the meta, style and script tags.
Signed-off-by: Lukas Bestle <mail@lukasbestle.com>
The feature to list commits from a subdirectory is already there but
so far the history link to it was missing. There is a History button
in the view_file.tmpl already so avoid showing two history buttons in
that case.
The GitHub webinterface has the same History button in the same place
so this makes gitea a little bit more compatible.
Signed-off-by: Bernhard Froehlich <decke@bluelife.at>
* Make reverse proxy auth optional
If the option ENABLE_REVERSE_PROXY_AUTHENTICATION is enabled, make
reverse proxy auth optional, instead of failing if the authentication
did not succeed.
Fixes#3973
Signed-off-by: Najib Idrissi <najib.idrissi.kaitouni@gmail.com>
* Update http.go
* Update "Upgrade from Gogs" en-us doc
- Move "Change gogs specific information" FROM/TO steps up
to just beneath matching section header, adjust indention
and explicitly specify syntax of code sample to provide
highlighting
- Adjust header levels to match what appears to be the
intended level, remove trailing decoration (see below)
- Move "Upgrading to most recent ..." section down, remove
decoration (section header formatting likely covers this
well enough already)
refs go-gitea/gitea#4286, go-gitea/gitea#3558
* Update "Upgrade from Gogs" fr-fr doc
- Adjust indention and explicitly specify syntax of code
sample to provide highlighting
- Adjust header levels to match what appears to be the
intended level, remove trailing decoration since
section header formatting likely covers this
well enough already
refs go-gitea/gitea#4286, go-gitea/gitea#3558
* Make sure author cannot reject/approve their own PR
* Disable buttons in templates too
* Remove unneccessary if check since the switch below catches it
* Fix IsOwner check
* Update template and remove new template variable
* Add alert template and redirect to diff page on review failure
* Redirect to files diff as a little update to #4632
* Add whitespace handling to PR-comparsion
In a PR we have to keep an eye on a lot of different things. But sometimes the
bare code is the key-thing we want to care about and just don't want to care
about fixed indention on some places. Especially if we follow the pathfinder
rule we face a lot of these situations because these changes don't break the
code in many languages but improve the readability a lot.
So this change introduce a fine graned button to adjust the way how the
reviewer want to see whitespace-changes within the code.
The possibilities reflect the possibilities from git itself except of the
`--ignore-blank-lines` flag because that one is also handled by `-b` and is
really rare.
Signed-off-by: Felix Nehrke <felix@nehrke.info>
* prevent pull request to be merged when PR is a WIP
* add tests
* add helper to prepend WIP: in PR title
* move default wip prefixes into settings
* use configurable WIP prefixes in javascript and default to first one in templates
* add documentation
* add unit test on pull model
Signed-off-by: Julien Tant <julien@craftyx.fr>
The $-function is unreachable in the previous implementation because jQuery is
not loaded yet. I fix this by executing the function after the content is
loaded, so jQuery is loaded at the time of execution and the call will not fail
anymore.
Signed-off-by: Felix Nehrke <felix@nehrke.info>
* an inactive user shouldn't be able to be a collaborator
* use translated error message
* add active user check when adding a new collaborator via the api
* fix translation text
* added collaborator test
* improvee testcases
* don't fail silently if trying to add a collaborator twice
* fix translation text
* added collaborator test
* improvee testcases
* Added tests to make sure a collaborator cannot be added twice
* Use integer limit value [1] instead of hard-coded magic constant for
NonexistentID.
* Explicitly use int64 in order to avoid the following errors on 32 bit
architectures:
# code.gitea.io/gitea/integrations
./api_admin_test.go:50:34: constant 9223372036854775807 overflows int
./api_token_test.go:47:34: constant 9223372036854775807 overflows int
[...]
# code.gitea.io/gitea/models
./action_test.go:179:15: constant 9223372036854775807 overflows int
[1] https://golang.org/pkg/math/#pkg-constants
Signed-off-by: Dennis Menschel <menschel-d@posteo.de>
* Initial ui components for pull request review
* Add Review
Add IssueComment types
Signed-off-by: Jonas Franz <info@jonasfranz.software>
(cherry picked from commit 2b4daab)
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Replace ReviewComment with Content
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add load functions
Add ReviewID to findComments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add create review comment implementation
Add migration for review
Other small changes
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Simplified create and find functions for review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Moved "Pending" to first position
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add GetCurrentReview to simplify fetching current review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Preview for listing comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Move new comment form to its own file
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Implement Review form
Show Review comments on comment stream
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for single comments
Showing buttons in context
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add pending tag to pending review comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add unit tests for Review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fetch all review ids at once
Add unit tests
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Improved comment rendering in "Files" view by adding Comments to DiffLine
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for invalidating comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Switched back to code.gitea.io/git
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Moved review migration from v64 to v65
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Rebuild css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Improve translations
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix unit tests by updating fixtures and updating outdated test
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Comments will be shown at the right place now
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for deleting CodeComments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix problems caused by files in subdirectories
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for showing code comments of reviews in conversation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for "Show/Hide outdated"
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update code.gitea.io/git
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for new webhooks
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update comparison
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Resolve conflicts
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Minor UI improvements
* update code.gitea.io/git
* Fix ui bug reported by @lunny causing wrong position of add button
Add functionality to "Cancel" button
Add scale effects to add button
Hide "Cancel" button for existing comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Prepare solving conflicts
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Show add button only if no comments already exist for the line
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add missing vendor files
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Check if reviewer is nil
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Show forms only to users who are logged in
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Revert "Show forms only to users who are logged in"
This reverts commit c083682
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Save patch in comment
Render patch for code comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add link to comment in code
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add reply form to comment list
Show forms only to signed in users
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add 'Reply' as translatable
Add CODE_COMMENT_LINES setting
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix problems introduced by checking for singed in user
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add v70
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update generated stylesheet
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix preview
Beginn with new review comment patch system
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add new algo to generate diff for line range
Remove old algo used for cutting big diffs (it was very buggy)
* Add documentation and example for CutDiffAroundLine
* Fix example of CutDiffAroundLine
* Fix some comment UI rendering bugs
* Add code comment edit mode
* Send notifications / actions to users until review gets published
Fix diff generation bug
Fix wrong hashtag
* Fix vet errors
* Send notifications also for single comments
* Fix some notification bugs, fix link
* Fix: add comment icon is only shown on code lines
* Add lint comment
* Add unit tests for git diff
* Add more error messages
* Regenerated css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* fmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Regenerated CSS with latest less version
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix test by updating comment type to new ID
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Introducing CodeComments as type for map[string]map[int64][]*Comment
Other minor code improvements
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix data-tab issues
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Remove unnecessary change
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* refactored checkForInvalidation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Append comments instead of setting
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Use HeadRepo instead of BaseRepo
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update migration
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Regenerated CSS
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add copyright
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update index.css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
The backend SearchRepositoryByName function supports several sort order
options, hook these up to the /repos/search API.
New parameters for /repos/search:
'sort': alpha, created, updated, size, or id
'order': asc or desc
'sort' defaults to alpha.
'order' defaults to ascending, and is ignored if 'sort' is not specified.
The overall default behavior is unchanged (alphabetically ascending).
This partially implements issue #3963
Signed-off-by: Allen Wild <allenwild93@gmail.com>
* fix language list
Standardized the languages' names within the list displayed when picking up a language at the bottom of the webpages
* typo
fix a typo into documentation (template rather than templete)
* fix languages list
The syntax of the gitea Makefile is not platform-agnostic and is
specific to the GNU version of `make`. BSD platforms such as FreeBSD
ship with bmake (BSD make) as their default `make` program; attempting
to compile gitea by simply executing `make` causes a wall of errors to
show as a result of syntax incompatible with BSD make.
If a file named `BSDmakefile` is present, `bmake` will give it
preference over a generic `Makefile`. This `BSDmakefile` is taken from
the BSD-licensed `gmake-proxy` project [0], which transparently proxies
all `make` commands to `gmake` (GNU make) on systems where `bmake` is
the default, and if `gmake` is not installed an error message is
displayed.
[0]: https://github.com/neosmart/gmake-proxy
* Implemented basic api endpoint to manage deadlines
* Fixed checking for permissions
* Updating a deadline from the ui is now entirely done via the api
* cleanup
* Cosmetics
* fixed lint + fmt
* Added swagger model definition for deadline response
* Updated gitea-sdk
* Updated gitea-sdk
* More cleanup
* Generate swagger json
* Merge branch 'master' of https://github.com/go-gitea/gitea into issue-due-date-api
# Conflicts:
# public/swagger.v1.json
* Fixed permission to update a deadline via api
* Re-added form to change a deadline
* Added client-side validation + not ignore error messages from the api
* Added locale for error message
* Merge branch 'master' of https://github.com/go-gitea/gitea
# Conflicts:
# models/issue_comment.go
* Proper date validation
* Fixed indention
* moved css to css file
* added documentation for error codes
* after merge cleanup
* Added swagger description
* DO NOTHING BUT TRIGGER THAT F*CKIN CI SO IT PICKS UP THE LATEST COMMIT AS IT SHOULD
* DO NOTHING BUT TRIGGER THAT F*CKIN CI SO IT PICKS UP THE LATEST COMMIT AS IT SHOULD
* regenerated stylesheets
Currently some issues need to be resolved and features need to be implemented before we can move the Gitea development workflow to a Gitea instance. Many ask why Gitea isn't hosted on Gitea, now that's in the FAQ.
This makes it easier for user who want to theme but
don't have the ability to know how to customize templates
all that is required is a change in a config option
The reason why I chose the DEFAULT_THEME as variable,
as perhaps in the future we will allow users to chose their
theme whon logged in just like we do with languages
For each action that is displayed in either the public activity overview
of a user, or in the dashboard overview, the link to the username is now
extended with a title attribute to show the FullName as hover text
Signed-off-by: Guido Diepen <site-github@guidodiepen.nl>
* Repositories can only migrated to own user or organizations
* Add check for organization that user does not belong to
* Allow admin to migrate repositories for other users
* add api user guides in doc
* update user-guides api page
* fix typo: user guides -> user guide
* move api-usage page under advanced category
* flesh out API usage docs
* Build on work by @tungsheng
* Address issues raised in #4037, #3673, and #4243
* Close#4247
Signed-off-by: Steve Traugott <stevegt@t7a.org>
- Fix typo that caused Gogs hooks to be created as Gitea hooks.
- Fix typo that caused Gogs hooks to be duplicated upon edit (though this bug was masked by the previous one).
Signed-off-by: Russell Aunger <rba@live.com>
Fix all the resting errors to have a valid swagger file.
They are still some warnings but nothing blocking.
Doing so I found that some request still misses son parameters for some POST/PUT/PATCH request. This means the a client generated from the swagger file will not work completely.
Fix#4088 by activating validation in drone
Should fix#4010.
The 'above the fold' space is very important, it seems possibly wasted with screenshots which aren't legible without enlarging.
This is a proposal to move them down.
https://github.com/go-gitea/gitea/pull/4035#issuecomment-394286204
@ohwgiles points out that the config section should, in fact, still be in accordance with the "server" struct, which contains the "LFS" struct. I should just remove the line
```
sec = Cfg.Section("LFS")
```
* Partial fix for #4010
Swagger validation needs 'required: true' for parameters that are in
the URL path.
Signed-off-by: Steve Traugott <stevegt@t7a.org>
* Partial fix for #4010
Swagger needs a description field in each swagger:operation response. Adding
minimal text for now on the way to getting swagger validate to pass. Many
standard swagger client libraries will not work with gitea until validate
passes, so prioritizing that over better descriptions for now.
Signed-off-by: Steve Traugott <stevegt@t7a.org>
* Partial fix for #4010
Swagger needs a comment line above each swagger:response comment -- it
uses these to populate the description: fields. Adding minimal text
for now on the way to getting swagger validate to pass. Many standard
swagger client libraries will not work at all with gitea until validate
passes, so prioritizing that over better descriptions for now.
Signed-off-by: Steve Traugott <stevegt@t7a.org>
* Replace '%28' with '#'
Add test case
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Use ResolveReference instead of strings.Replace
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add LDAP Key Synchronization feature
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Add migration: add login source id column for public_key table
* Only update keys if needed
* Add function to only list pubkey synchronized from ldap
* Only list pub ssh keys synchronized from ldap. Do not sort strings as ExistsInSlice does it.
* Only get keys belonging to current login source id
* Set default login source id to 0
* Some minor cleanup. Add integration tests (updete dep testify)
* Add disable registration as an environment variable
for docker
* Add REQUIRE_SIGNIN_VIEW as env var to docker
* Add variables to template
* Update docker docs
Update the sample configuration and config cheat sheet description for
the LOCAL_ROOT_URL configuration variable to mention the special case
required if PROTOCOL is set to 'unix'.
Fixes#3741.
Signed-off-by: Timothée Ravier <tim@siosm.fr>
* dep: Update github.com/go-macaron/csrf
Update github.com/go-macaron/csrf with dep to revision 503617c6b372
to fix issue of csrf-token security.
This update includes following commits:
- Add support for the Cookie HttpOnly flag
- Support secure mode for csrf cookie
Signed-off-by: Aleksandr Bulyshchenko <A.Bulyshchenko@globallogic.com>
* routers: set csrf-token security depending on COOKIE_SECURE
Signed-off-by: Aleksandr Bulyshchenko <A.Bulyshchenko@globallogic.com>
* Update makefile to use dep
* Migrate to dep
* Fix some deps
* Try to find a better version for golang.org/x/net
* Try to find a better version for golang.org/x/oauth2
* Add support for U2F
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add vendor library
Add missing translations
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Minor improvements
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add U2F support for Firefox, Chrome (Android) by introducing a custom JS library
Add U2F error handling
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add U2F login page to OAuth
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Move U2F user settings to a separate file
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add unit tests for u2f model
Renamed u2f table name
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix problems caused by refactoring
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add U2F documentation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Remove not needed console.log-s
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add default values to app.ini.sample
Add FIDO U2F to comparison
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* refactor setting router code
splitted up one huge router settings file into the smaller files
representing the actual page structure
* move code to subfolder
* rename functions
* renamed files
* add copyright information
* If using a different $USER then rename git user
* Chown based on $USER env
* Target only one part of passwd
* su-exec based on $USER
not a hardcoded value
* add more webhook support
* move hooks templates to standalone dir and add more webhooks ui
* fix tests
* update vendor checksum
* add more webhook support
* move hooks templates to standalone dir and add more webhooks ui
* fix tests
* update vendor checksum
* update vendor
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* load attributes when created release
* update comparsion doc
* moved avatar to profile page
* combined password change, email and account deletion into account settings page
* combined totp, access tokens, linked accounts and openid into security settings page
* move access tokens to applications settings page
* small change to restart drone build
* fix change avatar url on profile page
* redirect old settings urls to new ones
* enforce only one autofocus attribute on settings pages
* set correct redirect status code
* fmt fix
* Add LDAP service for tests
* Add LDAP login source and test user sign-in
* Add checks to test if user data is correct
* Add LDAP user sync test
* Add failed user sign-in test
* Added backers and sponsors on the README
* Added call to donate after npm install (optional)
* Remove npm changes
* Update readme to leave only needed sections
* Fix some comments in custom/conf/app.ini.sample
Some comments in app.ini.sample were very vague, didn't contain much information.
Some of them have been fixed, but mistakes that need to be fixed by an expert still remain, see #3928
Signed-off-by: Mikolaj Holysz <miki123211@gmail.com>
* Add an additional comment pointing to more documentation.
Add an additional comment to the top of the sample configuration file.
It contains a link pointing to gitea's docs and the configcheat sheet, which contains
some explanations about the parameters in the config.
Signed-off-by: Mikolaj Holysz <miki123211@gmail.com>
* Modify tbraeutigam/gogs-snap for gitea
* Fix building on 16.04 (manually build go-bindata).
-> add _source.tar.bz2 to .gitignore (used by snapcraft cleanbuild)
* Streamline Snap packaging:
- Take advantage of install-hooks (snapd 2.27)
- Use snapctl configuration storage for unchanging values
* Move to using Snap Hooks for configuration
* Missed re-adding daemon statement
* Fix two warnings from Codacy.
Milestone.IsOverDue vs Issue.IsOverdue, the former was also causing the
milestone list page template to fail to render if any milestones have a
due date assigned.
Signed-off-by: Travis J Parker <travis.parker@gmail.com>
* Added user language setting
* Added translation string for setting
* Fixed import order + typo
* improved checking if the user has a language saved in the db
* The current saved language is now set a default inside the dropdown
* fmt
* When a user signs in and doesn't have a language saved, the current browser language is saved
* updated gitea-sdk
* Merge branch 'master' of https://github.com/go-gitea/gitea into save-user-language
# Conflicts:
# models/migrations/migrations.go
# models/migrations/v62.go
* Made tests work again
* trigger CI
* trigger CI
* fmt
* re-trigger that FUCKING CI SO IT REALLY PICKS UP THE LATEST COMMIT ISTEAD OF PREDENDING TO DO SO
* re-trigger that FUCKING CI SO IT REALLY PICKS UP THE LATEST COMMIT ISTEAD OF PREDENDING TO DO SO
* When loggin in, only the language col gets updated instead of everything
* Started adding deadline to ui
* Implemented basic issue due date managing
* Improved UI for due date managing
* Added at least write access to the repo in order to modify issue due dates
* Ui improvements
* Added issue comments creation when adding/modifying/removing a due date
* Show due date in issue list
* Added api support for issue due dates
* Fixed lint suggestions
* Added deadline to sdk
* Updated css
* Added support for adding/modifiying deadlines for pull requests via api
* Fixed comments not created when updating or removing a deadline
* update sdk (will do properly once go-gitea/go-sdk#103 is merged)
* enhanced updateIssueDeadline
* Removed unnessecary Issue.DeadlineString
* UI improvements
* Small improvments to comment creation
+ ui & validation improvements
* Check if an issue is overdue is now a seperate function
* Updated go-sdk with govendor as it was merged
* Simplified isOverdue method
* removed unessecary deadline to 0 set
* Update swagger definitions
* Added missing return
* Added an explanary comment
* Improved updateIssueDeadline method so it'll only update `deadline_unix`
* Small changes and improvements
* no need to explicitly load the issue when updating a deadline, just use whats already there
* small optimisations
* Added check if a deadline was modified before updating it
* Moved comment creating logic into its own function
* Code cleanup for creating deadline comment
* locale improvement
* When modifying a deadline, the old deadline is saved with the comment
* small improvments to xorm session handling when updating an issue deadline
+ style nitpicks
* style nitpicks
* Moved checking for if the user has write acces to middleware
This is mostly a 'feel' change. The behaviour that is currently on the
access tokens pages is, as far as I know, not present in any other parts
of the frontend, and there's no real good reason to keep the 'Generate
New Token' panel hidden by default in my opinion.
* Show total tracked time in issue and milestone list
Show total tracked time at issue page
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Optimizing TotalTimes by using SumInt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fixing wrong total times for milestones caused by a missing JOIN
Adding unit tests for total times
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Logging error instead of ignoring it
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Correcting spelling mistakes
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Change error message to a short version
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add error handling to TotalTimes
Add variable for totalTimes
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Introduce TotalTrackedTimes as variable of issue
Load TotalTrackedTimes by loading attributes of IssueList
Load TotalTrackedTimes by loading attributes of single issue
Add Sec2Time as helper to use it in templates
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fixed test + gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Load TotalTrackedTimes via MilestoneList instead of single requests
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add documentation for MilestoneList
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add documentation for MilestoneList
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix test
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Change comment from SQL query to description
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix unit test by using int64 instead of int
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix unit test by using int64 instead of int
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Check if timetracker is enabled
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix test by enabling timetracking
Signed-off-by: Jonas Franz <info@jonasfranz.de>
This solves the problem of administrators creating accounts for users
that then do not know their initial password (without the administrator
sending it to them via some other channel).
* add topic models and unit tests
* fix comments
* fix comment
* add the UI to show or add topics for a repo
* show topics on repositories list
* fix test
* don't show manage topics link when no permission
* use green basic as topic label
* fix topic label color
* remove trace content
* remove debug function
I wanted navigation to the page "first" and the page
"last" of the pages of commits. I discovered this
has already been implemented in one of the templates.
Signed-off-by: Tan Pheng Heong <phtan90@gmail.com>
Modify the call to ping the database to fail gracefully if the
database has not yet been configured by the end user, such as
after a clean install. This allows /healthcheck to return a 200
with a modified status message instead of causing a PANIC.
Signed-off-by: Evan Sherwood <evan@sherwood.io>
* Add size column to attachment
Migrate attachments by calculating file sizes
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Calculate attachment size on creation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Log error instead of returning error
Signed-off-by: Jonas Franz <info@jonasfranz.software>
New Feature:
* Repository struct field for IsFsckEnabled (default true of course)
* Admin Settings section on repo options page, accessible only by
admin users
Possible Enhancements:
* There's no way to force running health checks on all repos
regardless of their IsFsckEnabled setting. This would be useful if
there were an admin API or dashboard button to run fsck immediately.
Issue: https://github.com/go-gitea/gitea/issues/1712
Signed-off-by: Allen Wild <allenwild93@gmail.com>
Why:
* We are using self-signed ssl certificates for internal services, which results in failures when gitea tries to communicate through webhooks with these. We would like to enable gitea to be able to use these certificates without having to build custom docker images.
How
* We add the internal certificates to /usr/local/share/ca-certificates on the host
* We read-only mount /usr/local/share/ca-certificates from the host to /usr/local/share/ca-certificates in the container
* We do a update-ca-certificates in the alpine container before starting gitea
This should have no consequence for users that do not have the need to handle self-signed certificates, as update-ca-certificates should be idempotent.
The choice regarding which forms should or should not trigger a warning
is subjective. I tried to be consistent and not warn about forms that:
- run an action, rather than edit data: search, send an email.
- delete data: a warning about losing data would be confusing
Note that forms on sign-in pages were already ignored (using a selector,
rather than an explicit class on the form element).
Fixes#3698.
* add global code search on explore
* fix bug when no anyone public repos
* change the icon
* fix typo and add UnitTypeCode check for login non-admin user
* fix ui description when no match
* Added checks for protected branches in pull requests
Signed-off-by: Christian Wulff <NChris@posteo.net>
* Moved check for protected branch into new function CheckUserAllowedToMerge
Signed-off-by: Christian Wulff <NChris@posteo.net>
* Removed merge conflict lines from last commit
Signed-off-by: Christian Wulff <NChris@posteo.net>
* Explicit check for error type in ViewIssue
Signed-off-by: Christian Wulff <NChris@posteo.net>
* Add Attachment API
* repos/:owner/:repo/releases (add attachments)
* repos/:owner/:repo/releases/:id (add attachments)
* repos/:owner/:repo/releases/:id/attachments
* repos/:owner/:repo/releases/:id/attachments/:attachment_id
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Add unit tests for new attachment functions
Fix comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* fix lint
* Update vendor.json
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* remove version of sdk
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix unit tests
Add missing license header
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add CreateReleaseAttachment
Add EditReleaseAttachment
Add DeleteReleaseAttachment
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add filename query parameter for choosing another name for an attachment
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix order of imports
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Restricting updatable attachment columns
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update go-sdk
Replace Attachments with Assets
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Update go-sdk
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Updating go-sdk and regenerating swagger
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add missing file of go-sdk
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Change origin of code.gitea.io/sdk to code.gitea.io/sdk
Update code.gitea.io/sdk
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update swagger
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update updateAttachment
Include both a log entry and the blocked mime type in the gitea log when
an attachment upload is blocked.
Chosen log level is info; this may need to be dialed down to trace.
* Use Segoe UI for Latin characters before falling back to YaHei
This fixes issues with character rendering on hidpi displays and other
aliasing/hinting issues, as Segoe UI has been painstakingly hinted by
typographers for Microsoft while YaHei has not. See #3237 for more
details.
Closes#3237
* Include transformed LESS -> CSS in commit
* Don't write to log NoCommitterAccount
It's way too verbose, and the information is also printed to the user
already. Fixes#3602.
* ignore err only if it's a ErrUserNotExist
* Replace with IsErrUserNotExist
* Get rid of autolink
* autolink in markdown
* Replace email addresses with mailto links
* better handling of links
* Remove autolink.js from footer
* Refactor entire html.go
* fix some bugs
* Make tests green, move what we can to html_internal_test, various other changes to processor logic
* Make markdown tests work again
This is just a description to allow me to force push in order to restart
the drone build.
* Fix failing markdown tests in routers/api/v1/misc
* Add license headers, log errors, future-proof <body>
* fix formatting
* fix: if Mirrors repo no content is fetched, updated time should not be changed
* fix: sync update time from mirror repo.
* fix: one single session.
* update comment.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* Changed style of checklist in issuelist.
* Adjusted padding for progressbar, updated index.css.
* Fixed another wrong tab to spaces.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Enable caching on assets and avatars
Fixes#3323
* Only set avatar in user BeforeUpdate when there is no avatar set
* add error checking after stat
* gofmt
* Change cache time for avatars to an hour
* add changelog for 1.4.0
* remove docs
* Remove some more noise
* Small reorganization, removed bugfixes that were not present in last stable version
* Move LFS lock to features, add just merged bugfix info
* Update source installation requirements
We require Golang 1.8 since we use `net/url.PathEscape` which was not introduced until then
* Use Golang 1.8 for build and test
If we state Golang 1.8 we should test using that version as well
* Use golang 1.8 only for single build to see if everything compiles
* Change back edge also for commented out sqlite test
* test: integration add git cli tests
Extracted form for easing review process and debug #3152
* test: integration add git cli big file commit
* fix: Don't rewrite key if internal server
These templates add content to the top navbar
and to the repository page.
This way we do not have to copy and modify the whole
template, and re-modify it after upgrading Gitea if
it changes.
Signed-off-by: Alberto González Palomo <bugs@sentido-labs.com>
The makefile did not download the theme if the directory "themes/gitea"
is there, even if empty.
On a fresh Ubuntu install, curl is not included, so the theme rule fails
just after creating the empty directory. When you try again after
installing curl, the rule is not triggered.
This could also happen if the download fails for other reasons.
This change makes the theme rule depend on the file "theme.toml"
which will be there only after unpacking a successfully downloaded
theme archive.
Signed-off-by: Alberto González Palomo <bugs@sentido-labs.com>
* Pull request options migration and UI in settings
* Add ignore whitespace functionality
* Fix settings if pull requests are disabled
* Fix migration transaction
* Merge with Rebase functionality
* UI changes and related functionality for pull request merging button
* Implement squash functionality
* Fix rebase merging
* Fix pull request merge tests
* Add squash and rebase tests
* Fix API method to reuse default message functions
* Some refactoring and small fixes
* Remove more hardcoded values from tests
* Remove unneeded check from API method
* Fix variable name and comment typo
* Fix reset commit count after PR merge
* Serve pull request .diff files
Closes#3259
* Add test for pull request redirection and .diff access
* Typo
* There's no need to test for pr.BaseRepo being nil after calling GetBaseRepo
Using the API calls, the issue objects retrieved by
/repos/{owner}/{repo}/issues
contains the wrong value in the "url" field:
it uses the "id" value instead of the "number" value.
For instance, in a new repo in try.gitea.io with just one issue:
[{
"id": 896,
"url": "https://try.gitea.io/api/v1/repos/AlbertoGP/uno/issues/896",
"number": 1,
...
}]
The given URL does not work, but if you replace the "896" by "1" it
does.
* Added progressbar for issues (#1146).
* Updated the generated index.css.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Removed stored progress percentage and changed it to css calc. Also added the issue task progress to the user/dashboard/issues.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Removed unnecessary blanks.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Formatted the files correctly, fmt-check terminates now without errors.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Removed variables, made computing the tasks on demand with precompiled regexp.
Signed-off-by: modmew8 <modmew8@gmail.com>
* Add repo-sync-releases admin command
Will help recovering corrupted database, see #3247
* Load repos in chunks of 10, exit with error if unable to get a list, scan private repos, fix typo
* Fix debug output about num releases
* Introduce RepositoryListDefaultPageSize constant, set to 64
Use it from the new admin command
* Use RepositoryListDefaultPageSize in more places
* Document RepositoryListDefaultPageSize
* Viewport meta tag
* responsive: dashboard
* responsive: issues page
* responsive: Explore page
* responsive: navbar, and some navbar css refactoring
* responsive: button for collapsing navbar in mobile view
* Mark the hamburger button as active when pressed
* better homepage for responsive views
* Bring back jump class in navbar
The class was necessary, because this way the
dropdown doesn't assume the contents of the
selected item.
* make repository homes responsive
* Make file view page responsive
* Make forms look good on responsive views
* make commits and commit diff view responsive
* issues and PRs
* responsive wiki
* Don't place auto-init far off the page
* Minor changes to amend broken stuff
minor improvements
- make login/sign up in navbar stackable
- make navbar in explore and sign in not stackable
Change selected class in TestPullCompare
Fix typo that happened when rebasing
fix dashboard on org view
improve profile UI
Use clearing on file diff to fix broken UI caused by floating elements
remove unresolved merge conflict, and | Sanitize
Fix repo home not loading
* Add an option to allow redirect of http port 80 to https.
This is an "opt in" option (default is to not redirect). It will only redirect
if protocol is https and the new REDIRECT_PORT_80 option is set to true.
The Port to redirect in previous commit was hardcoded to 80, now it can be
specified in the app.ini, defaulting to 80. The boolean option to turn
redirection on has been changed to REDIRECT_OTHER_PORT to be logically
consistent with the new port option.
Signed-off-by: Mike Fellows <mike.fellows@shaw.ca>
Enable emoji for wiki page content. It is enabled in the edit preview so the view should match.
Signed-off-by: Hamish Carpenter <hamish@hamishcarpenter.com>
* refactor struct's time to remove unnecessary memory usage
* use AsTimePtr simple code
* fix tests
* fix time compare
* fix template on gpg
* use AddDuration instead of Add
* Add failing test
* Fix urls
* Improve url in tests
* improve testing
* Remove debug code
* Add deps
* LFS corner-case : Search on lower but store with case
* Temporary comment of blocking action
* fix hooks
* Use temporary repo for git client test
* Use userPassword in place of hard-coded password
* Delete a user's public key via admin api
* Test admin ssh endpoint for creating a new ssh key
* Adapt public ssh key test to also test the delete operation
* Test that deleting a missing key will result in a 404
* Test that a normal user can't delete another user's ssh key
* Make DeletePublicKey return err
* Update swagger doc
* Initial working state of expandable commit bodies
* Fix all commits having showing button for multiline commits
* Refactor checking multiline messages method
* Force newlines with <br> in commit body
* Show multiple lines in the list view of repositories
* Fixed proper newlines and minor refactor
Use <pre> instead of <p>, this is so we can use \n instead of having to manually place <br> into the HTML. Makes it easier to display commit bodies.
* Fix commit list messages jumping around
* Fix indentation in view_list.tmpl
* Use vertical-align: baseline instead of top
* Refactor commit button toggle function
* Remove RenderCommitBodyLink function
* Add comments
* Add newline at the end of _repository.less
* Fix long commit bodies not properly wrapping inside <pre>
* Don't split on double newlines
* Show the commit body in commit view
* Update stylesheets
* Add/fix comments and run make fmt
* Fix spaces not being tabs
* Implement routes
* move to api/sdk and create model
* Implement add + list
* List return 200 empty list no 404
* Add verify lfs lock api
* Add delete and start implementing auth control
* Revert to code.gitea.io/sdk/gitea vendor
* Apply needed check for all lfs locks route
* Add simple tests
* fix lint
* Improve tests
* Add delete test + fix
* Add lfs ascii header
* Various fixes from review + remove useless code + add more corner case testing
* Remove repo link since only id is needed.
Save a little of memory and cpu time.
* Improve tests
* Use TEXT column format for path + test
* fix mispell
* Use NewRequestWithJSON for POST tests
* Clean path
* Improve DB format
* Revert uniquess repoid+path
* (Re)-setup uniqueness + max path length
* Fixed TEXT in place of VARCHAR
* Settle back to maximum VARCHAR(3072)
* Let place for repoid in key
* Let place for repoid in key
* Let place for repoid in key
* Revert back
* Extended LANDINGPAGE config variable to logged in users and added switch for 'organizations' in addition to 'home' and 'explore'.
* Updated comments.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Extended LANDINGPAGE config variable to trigger when user logs in and added switch for 'organizations' in addition to 'home' and 'explore'.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Extended LANDINGPAGE config variable to logged in users and added switch for 'organizations' in addition to 'home' and 'explore'.
* Updated comments.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Extended LANDINGPAGE config variable to trigger when user logs in and added switch for 'organizations' in addition to 'home' and 'explore'.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Removed superfluous conditional and correct whitespace.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Update app.ini
Reverted new line.
* Formatting.
Signed-off-by: Mike Schaffer <mschaff@gmail.com>
* Create docker/manifest/base.yml
serve as base for build docker image for most platform (386,amd64,arm,arm64)
* Add make task docker-multi-arch-push-manifest
To update references of a multi-arch image on docker registry.
* Use SED_INPLACE generic sed command
* Delete Dockerfile.aarch64
Delete Dockerfile.rpi
* Use gitea/gitea-base as base
and replace deprecated MAINTAINER by LABEL (https://docs.docker.com/engine/reference/builder/#maintainer-deprecated)
* Fix rebase
* Use sapk/gitea-base as base
* Split makefile for docker
* Fix version to v3.6
Could use in later version edge of alpine official library that support multi-arch for armhf.
* Remove sapk/gitea-base and use directly new official alpine multi-arch
* Use exec.CommandContext to simplfy timeout handling
And fixing the data races which can be identified by the added tests when -race enabled.
* Use sleep commmand instead of reading from stdin
* Make the error handling go-esque
* Set session and indexers' data files rel to AppDataPath
The setting AppDataPath is now relative to the working directory.
The session svc's PROVIDER_CONFIG now defaults to AppDataPath/data/sessions.
The issue indexer's IssuePath now defaults to AppDataPath/indexers/issues.bleves.
* fix bug
* Add `gettext` dependencies as we need `envsubst` command;
* Modified s6's gitea setup script, instead of `cp` the template if no
`app.ini` exist, it will substitude the envvars and generate the new
`app.ini`;
* Make `/docker/etc/templates/app.ini` a template contains environment
variables;
Signed-off-by: Tao Wang <twang2218@gmail.com>
* Make URL scheme unambiguous
Redirect old routes to new routes
* Fix redirects to new URL scheme, and update template
* Fix branches/_new endpoints, and update integration test
* Fix Comma Splices
Replace comma splices with more fitting punctuation—usually semicolons.
Signed-off-by: Omar Assadi <omar@assadi.ru>
* Turn Some Conjunctions into Sentences
Turn conjunctions—which are capable of standing on their own—into their standalone sentences.
Signed-off-by: Omar Assadi <omar@assadi.ru>
* Reword Sections and Fix Issues in Docs
Reword sections of the contributing docs and readme file to be more
natural and clear. Additionally, fix the majority of the grammar
mistakes.
Signed-off-by: Omar Assadi <omar@assadi.co.il>
* Add wrapping to long diff lines to fix#1827
* Fix css class and make changes to source (less) files
* Fix wrong space indentation
* Fix indentation inconsistencies and remove very old WebKit workaround
* Add repo type option to /api/repo/search
* Add tests and fix result of collaborative filter in specific condition
* Fix/optimize search & tests
* Improve integration tests
* Fix lint errors
* Fix unit tests
* Change and improve internal implementation of repo search
* Use NonexistentID
* Make search api more general
* Change mirror and fork search behaviour
* Fix tests & typo in comment
* cleanup old comments for ed25519
These comments were added when x/crypto/ed25519 could not yet handle
ed25519. It does now, so it should be removed.
Also the key type is now replaced with the proper constant.
* move the minimum key size config before the check
This moves the actual config lookup before any check is done. This
avoids problems with calling to ssh-keygen which doesn't support the
expected output format and returning an error, when the check is disabled.
* Add commit count caching
* Small refactoring
* Add different key prefix for refs and commits
* Add configuratuion option to allow to change caching time or disable it
* Add support for extra sendmail arguments
* Sendmail args to exec.command should be a list
* Add go-shellquote package
* Use go-shellquote lib for parsing Sendmail args
* Only parse if sendmail is configured
MAX_GIT_DIFF_LINE_CHARACTERS was updated in #1845 but the corresponding
default value of MaxGitDiffLineCharacters was not changed. This can lead
to inconsistencies.
* hide unactive on explore users and some refactors
* fix test for removed Organizations
* fix test for removed Organizations
* fix imports
* fix logic bug
* refactor the toConds
* Rename TestOrganizations to TestSearchUsers and add tests for users
* fix other tests
* fix other tests
* fix watchers tests
* fix comments and remove unused code
* Move swagger interface under /api/v1
* Update swagger-ui
* Add /api/swagger and prepare for multiple api version
* Update test links
* Fix footer link
* Configurable SSH cipher suite
* Update configuration file comment
* Add default in settings loading code
* Fix fmt and log messsage
* Remove default from code as this could probably might not be good idea
* Fix PR, milestone and label functionality if issue unit is disabled or not assigned to user
* Fix multi-actions in PR page
* Change error message
* Fix comment update and delete functionality in PR
* Create new branch from branch selection dropdown and rewrite it to VueJS
* Make updateLocalCopyToCommit as not exported
* Move branch name validation to model
* Fix possible race condition
* Fix so that user can still fork his own repository to his organizations
* Fix to only use owned organizations
* Add integration test for forking own repository to owned organization
* Add Activity page to repository
* Add request data for activity
* Add issue data for activity
* Add user unit right checks
* Add releases to activity
* Log repository unit loading error
* Allow custom SSH user in UI for built-in SSH server (#2617)
* Some fixes
* Did make fmt
* Updated according to review
- Renamed config to BUILTIN_SSH_SERVER_USER
- Removed unnecessary default string value for config item
* Updated according to review
* Fixed some minor issues
* Add more repo search tests
* Fix repo search tests
* Always test returned repos length
* Add test with lower pagesize limit (test more pages)
* Add and fix /api/repo/search integration tests
* Simplify unit tests code
* Simplify and unify integration tests code
* Improve test coverage
* Temporary fix tests due to bugs in current repo search implementation
* Revert removing not nil Searcher
* Add more checks to tests
* Simplify privacy checks in /api/repo tests
* Temporary remove privacy check from repo search tests
* v38 migration used an outdated version of RepoUnit model (#2602)
* change repoUnit model in migration
* fix v16 migration repo_unit table
* fix lint error
* move type definition inside function
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* fix lint error
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* Fix time tracking migration
* Refactor code
* Fix migration from Gogs
* v38 migration used an outdated version of RepoUnit model (#2602)
* change repoUnit model in migration
* fix v16 migration repo_unit table
* fix lint error
* move type definition inside function
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* fix lint error
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* Fix time tracking migration
* Refactor code
* Fix migration from Gogs
* add error check
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* Additiomal fixes for migrations
* Fix timetracking migration
* Add back nil check
* Use search component on org invitation user input.
* Search component for collaboration and members.
* Search component for repo search.
* minCharacters for search input
* Display full_name for user search.
* Fixed missing uid query parameter for repo search.
* Removed unused comment.
* fix duplicate issue tab as UnitTypeIssue and UnitTypeExternalTracker are existing at the same time
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* implemented missing 'delete' push webhooks
moreover created ActionDeleteBranch and ActionDeleteTag
* add CommitRepoAction tests for tag/branch creation/deletion
* fixed error where push webhook not called if is new branch or tag
removed unnecessary code
* moved prepare unit test environment into separate method to be used across unit tests
* add missing if clause in pushUpdate
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* add init support of orgmode document type on file view and readme
* fix imports
* fix imports and readmeExist
* fix imports order
* fix format
* remove unnecessary convert
* Fix sending mail with a non-latin display name. #2102
Signed-off-by: Rémi Saurel <contact@remi-saurel.com>
* Take into account the possibility that setting.MailService.From is in `name <email@address>` format. #2102
Signed-off-by: Rémi Saurel <contact@remi-saurel.com>
* Use standard lessc and minify CSS using Node.js
This changes the previous nonstandard `lessc` to the official one and
enables CSS minification via the clean-css module.
To build CSS, Node.js is required along with a `npm install` to get the
tools installed locally in node_modules so there is no dependency on
binaries in PATH. Benefits include:
- Allows one to have a standard lessc in PATH.
- Can now use command line switches on lessc.
- Minified CSS brings faster page load times and also has the benefit
of discouraging contributors from editing CSS directly.
To build CSS, Node.js is required along with a `npm install` to get the
tools installed locally based on the information in `package.json`.
The 'make stylesheet' task was modified to run without condition. This
makes it easier to work on the make task itself without having to delete
files.
Also fixes: https://github.com/go-gitea/gitea/issues/2198
* install node, npm and modules on drone
* .PHONY
* use 'minify' to minify CSS
* Sync releases table with tags on push and for mirrors
* Code style fixes
* Fix api to return only releases
* Optimize release creation and update
Minimize posibility of race conditions
* Fix release lower tag name updating
* handle tag reference update by addionally comparing commit id
* Sort repository tree entries in natural way
* Fix sort for different length strings with first parts equal
* Improve test case
* Refactor return statements
* Update gitea/git dependency
* restructure markup & markdown to prepare for multiple markup languages support
* adjust some functions between markdown and markup
* fix tests
* improve the comments
* Filter inactive users before sending emails or creating browser notifications
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* fix formatting issues
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* included requested changes
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
* optimized database queries
* rebasing new master and add tablenames for clarification in xorm queries
* remove escaped quotationmarks using backticks
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
MSSQL rejects the query:
SELECT "repository"."id" FROM "repository"
INNER JOIN "team_repo" ON "team_repo".repo_id="repository".id AND
"repository".is_mirror=1
WHERE (
("repository".owner_id=2 AND "repository".is_private=0)
OR team_repo.team_id IN (1)
)
GROUP BY "repository".id ORDER BY updated_unix DESC
when the order by term (updated_unix) is not included in the group by
term.
* Implementation of all repositories of a user from user->settings
* Update message when no repository found
* Update according to comments
* Change UI to have a better look
* improved user repositories UI
* Display commit status on landing page of repo
* improve last status of commits and add link to ci
* fix last commit status since the order of ids are desc
* use created & updated instead BeforeInsert & BeforeUpdate
* fix vendor checksum
* only show generated SQL when development mode
* remove extra update column updated_unix
* remove trace config
* Create option to disable githooks globally via configuration file
* Update comment in app.ini to align with @ethantkoenig's suggestion
Signed-off-by: Matti Ranta <matti@mdranta.net>
* Added comment's hashtag to url for mail notifications.
* Added explanation to return statement + documentation.
* Replacing in-line link generation with HTMLURL. (+gofmt)
* Replaced action-based model with nil-based model. (+gofmt)
* Replaced mailIssueActionToParticipants with mailIssueCommentToParticipants.
* Updating comment for mailIssueCommentToParticipants
* Added link to comment in "Dashboard"
* Deleting feed entry if a comment is going to be deleted
* Added migration
* Added improved migration to add a CommentID column to action.
* Added improved links to comments in feed entries.
* Fixes#1956 by filtering for deleted comments that are referenced in actions.
* Introducing "IsDeleted" column to action.
* Adding design draft (not functional)
* Adding database models for stopwatches and trackedtimes
* See go-gitea/gitea#967
* Adding design draft (not functional)
* Adding translations and improving design
* Implementing stopwatch (for timetracking)
* Make UI functional
* Add hints in timeline for time tracking events
* Implementing timetracking feature
* Adding "Add time manual" option
* Improved stopwatch
* Created report of total spent time by user
* Only showing total time spent if theire is something to show.
* Adding license headers.
* Improved error handling for "Add Time Manual"
* Adding @sapks 's changes, refactoring
* Adding API for feature tracking
* Adding unit test
* Adding DISABLE/ENABLE option to Repository settings page
* Improving translations
* Applying @sapk 's changes
* Removing repo_unit and using IssuesSetting for disabling/enabling timetracker
* Adding DEFAULT_ENABLE_TIMETRACKER to config, installation and admin menu
* Improving documentation
* Fixing vendor/ folder
* Changing timtracking routes by adding subgroups /times and /times/stopwatch (Proposed by @lafriks )
* Restricting write access to timetracking based on the repo settings (Proposed by @lafriks )
* Fixed minor permissions bug.
* Adding CanUseTimetracker and IsTimetrackerEnabled in ctx.Repo
* Allow assignees and authors to track there time too.
* Fixed some build-time-errors + logical errors.
* Removing unused Get...ByID functions
* Moving IsTimetrackerEnabled from context.Repository to models.Repository
* Adding a seperate file for issue related repo functions
* Adding license headers
* Fixed GetUserByParams return 404
* Moving /users/:username/times to /repos/:username/:reponame/times/:username for security reasons
* Adding /repos/:username/times to get all tracked times of the repo
* Updating sdk-dependency
* Updating swagger.v1.json
* Adding warning if user has already a running stopwatch (auto-timetracker)
* Replacing GetTrackedTimesBy... with GetTrackedTimes(options FindTrackedTimesOptions)
* Changing code.gitea.io/sdk back to code.gitea.io/sdk
* Correcting spelling mistake
* Updating vendor.json
* Changing GET stopwatch/toggle to POST stopwatch/toggle
* Changing GET stopwatch/cancel to POST stopwatch/cancel
* Added migration for stopwatches/timetracking
* Fixed some access bugs for read-only users
* Added default allow only contributors to track time value to config
* Fixed migration by chaging x.Iterate to x.Find
* Resorted imports
* Moved Add Time Manually form to repo_form.go
* Removed "Seconds" field from Add Time Manually
* Resorted imports
* Improved permission checking
* Fixed some bugs
* Added integration test
* gofmt
* Adding integration test by @lafriks
* Added created_unix to comment fixtures
* Using last event instead of a fixed event
* Adding another integration test by @lafriks
* Fixing bug Timetracker enabled causing error 500 at sidebar.tpl
* Fixed a refactoring bug that resulted in hiding "HasUserStopwatch" warning.
* Returning TrackedTime instead of AddTimeOption at AddTime.
* Updating SDK from go-gitea/go-sdk#69
* Resetting Go-SDK back to default repository
* Fixing test-vendor by changing ini back to original repository
* Adding "tags" to swagger spec
* govendor sync
* Removed duplicate
* Formatting templates
* Adding IsTimetrackingEnabled checks to API
* Improving translations / english texts
* Improving documentation
* Updating swagger spec
* Fixing integration test caused be translation-changes
* Removed encoding issues in local_en-US.ini.
* "Added" copyright line
* Moved unit.IssuesConfig().EnableTimetracker into a != nil check
* Removed some other encoding issues in local_en-US.ini
* Improved javascript by checking if data-context exists
* Replaced manual comment creation with CreateComment
* Removed unnecessary code
* Improved error checking
* Small cosmetic changes
* Replaced int>string>duration parsing with int>duration parsing
* Fixed encoding issues
* Removed unused imports
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Cleaning up public/ and documenting js/css libs.
This commit mostly addresses #1484 by moving vendor'ed plugins into a
vendor/ directory and documenting their upstream source and license in
vendor/librejs.html.
This also proves gitea is using only open source js/css libraries which
helps toward reaching #1524.
* Removing unused css file.
The version of this file in use is located at:
vendor/plugins/highlight/github.css
* Cleaned up librejs.html and added javascript header
A SafeJS function was added to templates/helper.go to allow keeping
comments inside of javascript.
A javascript comment was added in the header of templates/base/head.tmpl
to mark all non-inline source as free.
The librejs.html file was updated to meet the current librejs spec. I
have now verified that the librejs plugin detects most of the scripts
included in gitea and suspect the non-free detections are the result of
a bug in the plugin. I believe this commit is enough to meet the C0.0
requirement of #1534.
* Updating SafeJS function per lint suggestion
* Added VERSIONS file, per request
Avoids override of source file upon running `make test-pgsql`
Long story: settings.NewContext *adds* an INTERNAL_TOKEN if none
is found; the other ini files under integration/ all have an
INTERNAL_TOKEN
* Make sure generated password is random
Use /dev/urandom to get a 32 char password
* Make sure generated password is random
Use /dev/urandom to generate 32 char password
* Make sure generated password is random
To support High-DPI displays, generate images at 4 times their displayed
resolution, which should be enough to support all current devices
according to https://material.io/devices/.
* Don't allow for plain username/password authentication when 2FA is enabled
* Removed debugging statement
* Don't assume a token belongs to a given user, handle two-factor errors properly
* Simplified user/token matching, refactored error handling for two-factor authentication
* Change authentication response to avoid bruteforcing
* Add TODO item as a comment for changing the response for security purposes
* Remove unit types commits and settings
* Can not limit units in administrator teams
* Limit changing units only to teams with read and write access mode
* Small code optimization
* Add configuration flag SSH_EXPOSE_ANONYMOUS
If this flag (default True) is set to false, the SSH clone URL will only be exposed if the current user is signed in.
* Default SSH exposure set to false
To match GitHub and for security reasons, SSH URL exposure is disabled by default.
In addition to that. minor code changes have been applied.
Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
* Add integration tests
* Hide clone button neither HTTP and SSH is enabled
Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
* Make compare button URL aware if current repo is a fork (#2162)
* Optimize code
* To not change current behaviour check if signed in user has fork of base repository
* Fix to check only if signed user has forked repo otherwise it will still redirect to wrong page
This changes the regex to look for a hash from 7 to 40 characters,
to match the use of abbreviated hash lookups in both git and github.
The restriction of not being a pure number is also removed because
1234567 is now considered a valid abbreviated hash, as is deadbeef.
A note has been added to the top of the code to state that the
literal regex match is fine, but no extra validation is currently
performed so some false positives are expected.
A future change could ensure that the hash exists in the repository
before rendering it as a link, although this might incur a slight
performance penalty.
Reverts part of commit 4a46613 and fixes#2053.
* Use POSIX complaint ! operator in find
-not is a GNU extension and not all find(8) implementations
support it. It's just an alias for ! which is POSIX compliant.
Now gitea compiles on NetBSD at least.
* Revert change in vendor directory as requested
* Added count to GetReleasesByRepoID so pagination will work
* Separated it out to a new function, can then also leave the API part unaffected
* Remove extra whitespace added in untouched function
* Added comment and corrected name in error handler
* Account for if the user is owner or not in the count
* Also check if repo is draft
* revert back to the correct count in the ReleasesToDisplay loop
* Fixed lint error regarding else with return statement
* Use Cond struct instead of string, corrected name in error handler
* Removed unused return variable names
location.reload was being called when the related dropdown
was hidden, even if a request initiated before to update this
value hadn't finished. This caused troubles on Firefox.
* Add setting to disable authorized_keys backup when rewriting public keys
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Update default value to comply with documentation
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Use tmp-file instead of bak-file for saving manually added keys.
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Change casing
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Change casing and build bakpath with sprintf only
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Only close file once
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Do not modify calcFingerprint
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Fix casing
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Change style from disable to enable
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Change name, just SSH_BACKUP_AUTHORIZED_KEYS
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Do not check for directory existence if backup is disabled
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Enable assignee e-mail notification
* Check assignee and doer to avoid self made comment notifications.
* Assignee not always defined
* New method to avoid error when assignee deleted
* Assignee empty check
The well commented conf/app.ini file that comes with the code shows the
ROOT_URL (i.e. setting.AppURL) as:
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
However the installed custom/conf/app.ini file does not include this setting as
shown, and the default in the setting module was hard coded to
http://localhost:3000/ instead of what is shown above.
With this change the ROOT_URL will default to what is shown above if it is not
set in the custom/conf/app.ini.
Of course it is still possible to override the default by adding the ROOT_URL
setting to your custom/conf/app.ini file as usual.
Signed-off-by: Mike Fellows <mike.fellows@shaw.ca>
* Make branch deletion URL more like GitHub's, fixes#1397
* Add PR branch deletion integration test
* Do not allow deleting protected branch
* Change http error code to 403 if user has no write rights to repository
* Add check to not panic if forked repository has alrady been deleted
* Separate generate-swagger
* Remove go generate rules
* Add missing definition replacement + remove use of -i sed flag
for compatibility with mac os default sed version.
This is a little hacky a better solution could be use.
* Use custom SED_INPLACE
depending of platform detection
* Use SED_INPLACE for swagger-ui also
* Switch to keybase go-crypto (for some elliptic curve key) + test
* Use assert.NoError
and add a little more context to failing test description
* Use assert.(No)Error everywhere 🌈
and assert.Error in place of .Nil/.NotNil
* Support CRLF when splitting code lines for display
* refactor, fix mixed match
* fmt
* split on both LF and CRLF, use raw literals in regexes
* simplify
* Delete public key tmp file after calculating fingerprint
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Move line
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Remove defer statement
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Readd defer statement and move remove
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Delete space
Signed-off-by: Magnus Lindvall <magnus@dnmgns.com>
* Send mails as HTML as default. Setting for send as plain text.
* Add new option SendAsPlainText. remove EnableHTMLAlternative
* Send HTML mails as default
* Add html check if html2text should be performed
* Send only multipart or plain. Add deprication warning for ENABLE_HTML_ALTERNATIVE
* Still use ENABLE_HTML_ALTERNATIVE for backward compatibility
* Changed to not ignore html2text errors
* Include formatting check to the `make check` rule
... and give it its own standalone target too (make fmt-check)
Show diff on fmt-check failure
Do not allow running "fmt-check" with incompatible go version
Also simplify the `fmt` rule
* Forbid running "make fmt" with Go version != 1.7 or 1.8
* Ignore bindata.go for spelling and formatting checks
also remove duplicated variable assignment for GOFILES
* Run `make fmt`
* Remove annoying difference in button heights.
Why was that even there?
See before & after: http://imgur.com/a/yKdUR
* (2/2) Remove annoying difference in button heights
* Display all organization from user settings
* fix Tab selection
* Update locale_en-US.ini
* Add a condition for display Create organization button
* Remove french translation
* Remove unnecessary admin flag
Tests indicate that line length alone does not make browsers slow, so
increase the default threshold after which diffs get surpressed for line
length from 500 to a more reasonable 5000 characters.
Fixes: https://github.com/go-gitea/gitea/issues/1826
Firefox users will experience a flash of unstyled content on loading
various pages, this patch will fix this issue using Filament Groups
loadCSS library to asynchronously load the CSS responsible for the FOUC.
Will fix#1698.
Signed-off-by: Sondre Nilsen <nilsen.sondre@gmail.com>
* Added comment's hashtag to url for mail notifications.
Signed-off-by: Jonas <info@jonasfranz.software>
* Added comment's hashtag to url for mail notifications.
Added explanation to return statement.
Signed-off-by: Jonas <info@jonasfranz.software>
* Added comment's hashtag to url for mail notifications.
Added explanation to return statement + documentation.
Signed-off-by: Jonas <info@jonasfranz.software>
* Added comment's hashtag to url for mail notifications.
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Replacing in-line link generation with HTMLURL. (+gofmt)
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Replaced action-based model with nil-based model. (+gofmt)
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Replaced mailIssueActionToParticipants with mailIssueCommentToParticipants.
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Updating comment for mailIssueCommentToParticipants
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* add units to team
* fix lint
* finish team setting backend
* finished permission controll on routes
* fix import blank line
* add unit check on ssh/http pull and push and fix test failed
* fix fixtures data
* remove unused code
* Forgot password should use ResetPwdCodeLives, not ActiveCodeLives
* Improve documentation for different send mail functions related to password reset
* Improve documentation in conf/app.ini regarding xxx_CODE_LIVE_MINUTES settings
* markup: microoptimise for many short filenames in directory
Move strings.ToLower() after the early-return length check. This is a safe operation in all cases and should slightly improve directory listing performance when a directory contains many thousands of files with short filenames.
* markup: expand test cases for IsReadmeFile()
* Show commit status icon in commits table
* Add comments
* Fix icons
* Few more places where commit table is displayed
* Change integration test to use goquery for parsing html
* Add integration tests for commit table and status icons
* Fix status to return lates status correctly on all databases
* Rewrote lates commit status selects
* Fix commit sha1 URL rendering in markdown
* Add unit test for commit sha1 markdown rendering when sha1 has space before it
* Change to better variable name
* Exposes in API the Repo entity's IsBare property as IsEmpty
Signed-off-by: Guyzmo <guyzmo+github+pub@m0g.net>
* Exposes in API the Repo entity's Size property
Signed-off-by: Guyzmo <guyzmo+github+pub@m0g.net>
* move all database operations from hook command to web command and instead of internal routes
* bug fixed
* adjust the import path sequences
* remove unused return value on hookSetup
- Generate swagger.json into public/
- Add swagger-ui auto-installation
- Add footer link to local swagger-ui
- Add /swagger url for using app url.
- Fix Swagger-UI version via git tag
* Do not allow commiting to protected branch from online editor
* Add editor integration tests for adding new file and not allowing to add new file to protected branch
* add google+
* sort signin oauth2 providers based on the name so order is always the same
* update auth tip for google+
* add gitlab provider
* add bitbucket provider (and some go fmt)
* add twitter provider
* add facebook provider
* add dropbox provider
* add openid connect provider incl. new format of tips section in "Add New Source"
* lower the amount of disk storage for each session to prevent issues while building cross platform (and disk overflow)
* imports according to goimport and code style
* make it possible to set custom urls to gitlab and github provider (only these could have a different host)
* split up oauth2 into multiple files
* small typo in comment
* fix indention
* fix indentation
* fix new line before external import
* fix layout of signin part
* update "broken" dependency
1. Use `apk -U --no-cache add` instead of `apk update` + `apk add` +
manually cache clean up.
2. Separate package installation and user, group setup, the combination
to reduce a docker image layer didn't bring benefits here, only makes
Dockerfiles more complex.
* improve integration test to resue models/fixtures and store git repos with source
* use gitea-integration-meta dir instead .tar.gz and cleanup every before every test
* fix import package name
* Check if missing deps in vendor
This will catch import from other repos. (maybe by auto-import)
* Remove github.com/smartystreets unused deps
* Remove github.com/boltdb/bolt unused dep
* Fetch github.com/go-xorm/core + sync gopkg.in/ldap.v2/ldap.go
* Auto-install govendor + reinstall github.com/boltdb/bolt needed by vendor/github.com/blevesearch/bleve/index/store/boltdb
* Update go-xorm/xorm to a5cb21 in vendor.json
* Use a custom repo for implementing change to bolt dep.
* Switching bolt to github.com/go-gitea/bolt
* Switching bolt to github.com/go-gitea/bolt (fork version)
* change the drone sign
* add internal routes for ssh hook comands
* fix lint
* add comment on why package named private not internal but the route name is internal
* add comment above package private why package named private not internal but the route name is internal
* remove exp time on internal access
* move routes from /internal to /api/internal
* add comment and defer on UpdatePublicKeyUpdated
* Add correct git branch name validation
* Change git refname validation error constant name
* Implement URL validation based on GoLang url.Parse method
* Backward compatibility with older Go compiler
* Add git reference name validation unit tests
* Remove unused variable in unit test
* Implement URL validation based on GoLang url.Parse method
* Backward compatibility with older Go compiler
* Add url validation unit tests
* Implementation of the feature to view repository size in admin panel
* Move GetRepoSize to git module
* Repository.RepoSize -> Repository.Size
* RepoSize -> Size in template
* Redo a few bits and pieces
* Update size when syncing mirror or forking
* Remove GetRepoSize
* Changed fatal errors to error message
* Copy migration code from Gogs
* make fmt
* Allow ENABLE_OPENID_SIGNUP to depend on DISABLE_REGISTRATION
Omit the configuration variable (the default) to be dependent.
Fixes#1363
* Move OpenID settings under Service object
* Show OpenID SignUp and SignIn status in admin panel / configuration
* issue #1250, replace {pre,post}-receive and update hooks with a single shell script that does not require custom hooks to be a sh-script
* issue #1250, make script posix compilant
* v23, add migration script to update {pre,post}-receive and update hooks
* migration: use a more common name and rename v23 to v26 to avoid conflicts
* gofmt'ed and added copyright header
* fix SyncRepositoryHooks to also sync wiki repos
* GPG commit validation
* Add translation
+ some little fix
* Move hash calc after retrieving of potential key + missing translation
* Add some little test
* Send notifications to partecipants in issue comments
Closes#1216
Includes test (still failing)
* Do not include "labelers" to participants
Fix test to expect what GetParticipants return
* Take navbar out of column
* Add styles to navbar
* Changed navbar classes
* Remove unneeded !important from index.css
* Remove unneeded !important from _explore.less
Also renames `forgot_password` translation key to
`forgot_password_title` and `forget_password` to
`forgot_password`
Includes entry in CHANGELOG about the breaking change
(and some markdown fixes in there)
* Add integration test for signup
* Remove unused functions
* Refactoring
* Add repo_create_test.go
* Rollback the incomplete repo create test
* Comply with linter requirements and simplify the code a little bit
It's helpful when you forgot your password thus cannot change it
(can happen if you log in via OAuth2 or OpenID)
Also make sure that both the delete-account and password-change
links to forgot-password will have the primary email pre-filled
As we can not compile darwin binaries with static flags I have split the
build process into different make tasks. Now we get static linked
binaries especially for linux so that it also can run on older versions
of CenOS and so on.
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Implement '/api/v1/version'
* Cleanup and various fixes
* Enhance run.sh
* Add install_test.go
* Add parameter utils.Config for testing handlers
* Re-organize TestVersion.go
* Rename functions
* handling process cleanup properly
* Fix missing function renaming
* Cleanup the 'retry' logic
* Cleanup
* Remove unneeded logging code
* Logging messages tweaking
* Logging message tweaking
* Fix logging messages
* Use 'const' instead of hardwired numbers
* We don't really need retries anymore
* Move constant ServerHttpPort to install_test.go
* Restore mistakenly removed constant
* Add required comments to make the linter happy.
* Fix comments and naming to address linter's complaints
* Detect Gitea executale version automatically
* Remove tests/run.sh, `go test` suffices.
* Make `make build` a prerequisite of `make test`
* Do not sleep before trying
* Speedup the server pinging loop
* Use defined const instead of hardwired numbers
* Remove redundant error handling
* Use a dedicated target for running code.gitea.io/tests
* Do not make 'test' depend on 'build' target
* Rectify the excluded package list
* Remove redundant 'exit 1'
* Change the API to allow passing test.T to test handlers
* Make testing.T an embedded field
* Use assert.Equal to comparing results
* Add copyright info
* Parametrized logging output
* Use tmpdir instead
* Eliminate redundant casting
* Remove unneeded variable
* Fix last commit
* Add missing copyright info
* Replace fmt.Fprintf with fmt.Fprint
* rename the xtest to integration-test
* Use Symlink instead of hard-link for cross-device linking
* Turn debugging logs on
* Follow the existing framework for APIs
* Output logs only if test.v is true
* Re-order import statements
* Enhance the error message
* Fix comment which breaks the linter's rule
* Rename 'integration-test' to 'e2e-test' for saving keystrokes
* Add comment to avoid possible confusion
* Rename tests -> integration-tests
Also change back the Makefile to use `make integration-test`.
* Use tests/integration for now
* tests/integration -> integrations
Slightly flattened directory hierarchy is better.
* Update Makefile accordingly
* Fix a missing change in Makefile
* govendor update code.gitea.io/sdk/gitea
* Fix comment of struct fields
* Fix conditional nonsense
* Fix missing updates regarding version string changes
* Make variable naming more consistent
* Check http status code
* Rectify error messages
* Fix for #828
Add build tags to ldflags and print in version output
Signed-off-by: Jonas Östanbäck <jonas.ostanback@gmail.com>
* Reworked formatBuiltWith function
Signed-off-by: Jonas Östanbäck <jonas.ostanback@gmail.com>
* Add tags to version information in admin panel
Signed-off-by: Jonas Östanbäck <jonas.ostanback@gmail.com>
* Added new variable for use on admin page.
Signed-off-by: Jonas Östanbäck <jonas.ostanback@gmail.com>
* Fixed incorrect indentation
* fixes#1050 where linking an account to a 2fa enabled account failed because we forgot to really link the account when 2fa is completed
* handle errors
* move all push update to git hook post-receive and protected branch check to git hook pre-receive
* add SSH_ORIGINAL_COMMAND check back
* remove all unused codes
* fix the import
I was confused by current wording, which seemed to imply that
*records* would be initialized, while instead the function initializes
the *git repositories* instead, where missing but referenced.
Fix for #1013: adds "bindata" to tags by default, as without this the
resulting docker image won't start, as it doesn't contain locale files.
Verified to work even if you specify TAGS="bindata" such that it appears
twice.
* initial stuff for oauth2 login, fails on:
* login button on the signIn page to start the OAuth2 flow and a callback for each provider
Only GitHub is implemented for now
* show login button only when the OAuth2 consumer is configured (and activated)
* create macaron group for oauth2 urls
* prevent net/http in modules (other then oauth2)
* use a new data sessions oauth2 folder for storing the oauth2 session data
* add missing 2FA when this is enabled on the user
* add password option for OAuth2 user , for use with git over http and login to the GUI
* add tip for registering a GitHub OAuth application
* at startup of Gitea register all configured providers and also on adding/deleting of new providers
* custom handling of errors in oauth2 request init + show better tip
* add ExternalLoginUser model and migration script to add it to database
* link a external account to an existing account (still need to handle wrong login and signup) and remove if user is removed
* remove the linked external account from the user his settings
* if user is unknown we allow him to register a new account or link it to some existing account
* sign up with button on signin page (als change OAuth2Provider structure so we can store basic stuff about providers)
* from gorilla/sessions docs:
"Important Note: If you aren't using gorilla/mux, you need to wrap your handlers with context.ClearHandler as or else you will leak memory!"
(we're using gorilla/sessions for storing oauth2 sessions)
* use updated goth lib that now supports getting the OAuth2 user if the AccessToken is still valid instead of re-authenticating (prevent flooding the OAuth2 provider)
* Protected branches system
* Moved default branch to branches section (`:org/:reponame/settings/branches`).
* Initial support Protected Branch.
- Admin does not restrict
- Owner not to limit
- To write permission restrictions
* reformat tmpl
* finished the UI and add/delete protected branch response
* remove unused comment
* indent all the template files and remove ru translations since we use crowdin
* fix the push bug
* Fix assigned/created issues in dashboard. (#3560)
* Fix assigned/created issues in dashboard.
* Use GetUserIssueStats for getting all Dashboard stats.
* Use gofmt to format the file properly.
* Replace &Issue{} with new(Issue).
* Check if user has access to given repository.
* Remove unnecessary filtering of issues.
* Return 404 error if invalid repository is given.
* Use correct number of issues in paginater.
* fix issues on dashboard
* feat: support search bar on star tab of user profile.
* fix: update testing.
* fix: Using loadAttributes
* fix: remove empty line.
* remove LOWER
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* Markdown rendering overhaul
Cleaned up and squashed commits into single one.
Signed-off-by: Andrew Boyarshin <boyarshinand@gmail.com>
* Fix markdown API, add markdown module and API tests, improve code coverage
Signed-off-by: Andrew Boyarshin <boyarshinand@gmail.com>
* Add import-styleguide to Contributing.md
Question: should we group all `code.gitea.io`-packages together as local imports? (including `code.gitea.io/sdk` and `code.gitea.io/git` etc)
* reorg
* be specific FFS
* Fix public activity showing private repos (#811)
Signed-off-by: Morgan Bazalgette <the@howl.moe>
* error check after setting is_private to true
* Add test for UpdateRepository w/ visibility change
* Update pt-BR translations
* Minor updates to translations
* Change "Pull Request" to "pull request".
* Change "Problemas" to "Issues" to keep consistency.
* Change "Propriedade" to "propriedade".
* Change "Wiki" to "wiki".
* Rename "questão" to "issue".
* Update almost all the strings from "[action]" section.
* Added new pt-BR translations
* Allow using custom time format
I need to use custom time format in `conf/app.ini' like
FORMAT = 2006-01-02 15:04:05
so that Gitea will display '2017-01-30 08:41:49'
check this answer for more constants to format date <http://stackoverflow.com/a/20234207/2570425>
PS: First GO commit
* Refactor and validate TimeFormat (must have 2006, 01, 02, 15, 04 and 05)
This change corrects a few logging issues:
* Standardized formatting errors with '%v'.
* Standardized failure warning word usage.
* Corrected an instance of using the standard log library when
the gitea log library should be used instead.
* Use local folder for xgo
* Always do crosscompile and testing to fail early
* Added mips* values for boltdb
In order to get master building again I have applied these 2 additional
files to boltdb. This should get dropped when
https://github.com/boltdb/bolt/issues/656 gets solved.
* Update ru-RU translation
* Fixed translation for ru-RU. Incorrect quotation marks.
* Update ru-RU translation. Changed 'issue' translation. Updated 'notifications' translation.
* Changed translation of “issue” from “trouble” to “task”. This translation is being used in most tracking systems.
* Improved translation of the sentence to sound better in Russian.
* Remove the default console logger when it is not set in the configuration
* Added comment to new function (lint failure)
* update based on PR comments (code style)
* code style fix (thanks bkcsoft)
* check if logger exists based on the l.outputs (like in l.DelLogger) instead of adapter, otherwise panic when reinstalling gitea (since the output adapter still exist, without outputs)
* Add a process.Manager singleton with process.GetManager()
* Use process.GetManager everywhere
* Fix godoc comments for process module
* Increment process counter id after locking the mutex
* Moved attachaments POST url from /issues/attachments to /attachments
* Implemented attachment upload on release page
* Implemented downloading attachments on the release page
* Added zip and gzip files to default allowed attachments
* Implemented uploading attachments on edit release
* Renamed UploadIssueAttachment to UploadAttachment
Breaks the retrieval of repositories into two queries
This fetches the paged ids in one go, then the
actual repository information in a second query
Some databases do not support SELECT with *
when group by is used.
* Use relative URLs
* Notifications - Mark as read/unread
* Feature of pinning a notification
* On view issue, do not mark as read a pinned notification
- Add site-wide option DEFAULT_KEEP_EMAIL_PRIVATE.
- Add the new option to the install and admin/config pages.
- Add the new option to app.ini in the service section.
- Add the new option to the settings struct.
- Add English text strings to i18n.
- Add field KeepEmailPrivate to user struct.
- Add field KeepEmailPrivate to user form.
- Add option to UI.
- Add using noreply email address if user has "Keep Email Private".
An email address <LowerName>@<NO_REPLY_ADDRESS> is now used in commit
messages (and hopefully all other git log relevant places). The
change relies on the fact that git commands should use
user.NetGitSig().
- Add hiding of email address in UI, if user has set "Keep Email Private".
- Add condition to show email address only on explore/users and user
pages, if user has not set "Keep Email Private".
- Add noreply email in API if set "Keep Email Private".
- Add a new service setting NO_REPLY_ADDRESS. The value of this
setting is used as the domain part for the user's email address in
git log, iff he decides to keep his email address private.
If the user decides to keep his email address private and this
option is not set 'noreply.example.org' is used, which no MTA
should send email to.
Add NO_REPLY_ADDRESS to conf/app.ini.
* Check primary email address fields on CreateUser
As this check wasn't available, uid=1 (and possibly guests too, if registration is open) is able to register new users with existing email addresses. This leads to numerous 500 errors.
* Update user.go
* Lower the email first. Then check
* UI config to toggle whether user email shows up in Explore Users
* Recommendation made by @tboerger
66a1c59fe7 (r94122732)
* fixed typo, rename ShowUserEmailInExplore to ShowUserEmail
* Fixed typo merged conflict
* Hide email in the user profile page
if you are active ShowUserEmail
ref https://github.com/go-gitea/gitea/pull/336#issuecomment-269843725
* Please replace MustBool() with MustBool(true)
* restrict creating organizations based on right on user
* revert bindata.go
* reverse vendor lib
* revert goimports change
* set AllowCreateOrganization default value to true
* revert locale
* added default value for AllowCreateOrganization
* fix typo in migration-comment
* fix comment
* add coments in migration
* Speed up conflict checking in pull request creation
In order to check conflicts of a PR, we set up a working tree by
cloning the base branch, which is quite time-consuming when the repository is huge.
Instead, this PR uses `git read-tree` and `git apply --check --cached` to check conflicts.
For #258
* Use $GIT_INDEX_FILE instead of --index-output to avoid lockfile problem
The lockfile gets renamed to the final destination after the operation
finishes. But it must be located in the same filesystem, which prevents
us from using /tmp.
* Temporary file names should not prefixed with '-'
* Tab on user profile to show starred repos
* Make golint happy and use transactions on StarRepo function
* x -> sess
* Use sess.Close() instead of sess.Rollback()
* Add copyright
* Fix lint
* Import github.com/git-lfs/lfs-test-server as lfs module base
Imported commit is 3968aac269a77b73924649b9412ae03f7ccd3198
Removed:
Dockerfile CONTRIBUTING.md mgmt* script/ vendor/ kvlogger.go
.dockerignore .gitignore README.md
* Remove config, add JWT support from github.com/mgit-at/lfs-test-server
Imported commit f0cdcc5a01599c5a955dc1bbf683bb4acecdba83
* Add LFS settings
* Add LFS meta object model
* Add LFS routes and initialization
* Import github.com/dgrijalva/jwt-go into vendor/
* Adapt LFS module: handlers, routing, meta store
* Move LFS routes to /user/repo/info/lfs/*
* Add request header checks to LFS BatchHandler / PostHandler
* Implement LFS basic authentication
* Rework JWT secret generation / load
* Implement LFS SSH token authentication with JWT
Specification: https://github.com/github/git-lfs/tree/master/docs/api
* Integrate LFS settings into install process
* Remove LFS objects when repository is deleted
Only removes objects from content store when deleted repo is the only
referencing repository
* Make LFS module stateless
Fixes bug where LFS would not work after installation without
restarting Gitea
* Change 500 'Internal Server Error' to 400 'Bad Request'
* Change sql query to xorm call
* Remove unneeded type from LFS module
* Change internal imports to code.gitea.io/gitea/
* Add Gitea authors copyright
* Change basic auth realm to "gitea-lfs"
* Add unique indexes to LFS model
* Use xorm count function in LFS check on repository delete
* Return io.ReadCloser from content store and close after usage
* Add LFS info to runWeb()
* Export LFS content store base path
* LFS file download from UI
* Work around git-lfs client issue with unauthenticated requests
Returning a dummy Authorization header for unauthenticated requests
lets git-lfs client skip asking for auth credentials
See: https://github.com/github/git-lfs/issues/1088
* Fix unauthenticated UI downloads from public repositories
* Authentication check order, Finish LFS file view logic
* Ignore LFS hooks if installed for current OS user
Fixes Gitea UI actions for repositories tracking LFS files.
Checks for minimum needed git version by parsing the semantic version
string.
* Hide LFS metafile diff from commit view, marking as binary
* Show LFS notice if file in commit view is tracked
* Add notbefore/nbf JWT claim
* Correct lint suggestions - comments for structs and functions
- Add comments to LFS model
- Function comment for GetRandomBytesAsBase64
- LFS server function comments and lint variable suggestion
* Move secret generation code out of conditional
Ensures no LFS code may run with an empty secret
* Do not hand out JWT tokens if LFS server support is disabled
* Implemented sendmail. This piggybacks on existing configuration to keep the change simple
* Changed privicy of new sendSMTP and sendSendmail functions
* Fixed Lint errors
* Seperated SMTP and sendmail into their own senders
* Making new structs private as they should not be used externally now
* Added sendmail setting to ini file
* Minor code cleanup
* Enables mssql support
Port of dlobs work in gogs.
Enables options in index.js
Enables MSSQL as a database option in go.
Sets ID to 0 on initial migration. Required for
MSSQL insert statements.
Signed-off-by: Beau Trepp <beautrepp@gmail.com>
* Vendors in denisenkom/go-mssqldb
Includes golang.org/x/crypto/md4
as this is required by go-msssqldb
Signed-off-by: Beau Trepp <beautrepp@gmail.com>
* Dropped the status from readme, it's anway always outdated
* Added version badge
* Cleaned the install instructions
* Dropped paragraphs that should be documented on the docs
* Simplified the content, refer to the website
* Dropped the logo, lets show screenshots
* Fixed TRANSLATORS link
* Moved conf assets into options folder
* Dropped old bindata
* Started to integrate options bindata and accessors
* Do not enforce a builtin app.ini
* Replaced bindata calls with options
* Dropped bindata task from makefile, it's the generate task now
* Always embedd app.ini to provide sane config defaults
* Use sane defaults for the configuration
* Defined default value for SSH_KEYGEN_PATH
* Dropped "NEVER EVER MODIFY THIS FILE" header from app.ini
* Fixed new paths in latest test additions
* Drop bindata with make clean task
* Set more proper default values
* Check if file is a symlink with web editor (#3687)
* editor checks for symlinks
* translate file_is_a_symlink message
* credit translation author
* fix error constant
a transaction session was in progress. MailParticipants was failing
silently because of the SQLITE_LOCKED error. Make sure failures in
MailParticipants enter the log, and pass on the transaction context.
issue: let caller pass in database context, and use it
issue_comment: obtain database context to pass to UpdateIssueMentions
issue_comment: log any error from call to MailParticipants
issue_mail: pass on database context to UpdateIssueMentions
* Remove unused custom-alphabet feature of random string generator
Fix random string generator
Random string generator should return error if it fails to read random data via crypto/rand
* Fixes variable (un)initialization mixed assign
Update test GetRandomString
* Added stupid docker task to makefile
* Dropped unknown option PrintLastLog from docker ssh config
* OpenSSH should log to docker stdout
* Set random pw for docker git user, otherwise it is locked
* Stop using templates and public within docker
* Correction LDAP username validation
As https://msdn.microsoft.com/en-us/library/aa366101(v=vs.85).aspx describe spaces should not be in start or at the end of username but they can be inside the username. So please check my solution for it.
* Check for zero length passwords in LDAP module.
According to https://tools.ietf.org/search/rfc4513#section-5.1.2 LDAP client should always check before bind whether a password is an empty value. There are at least one LDAP implementation which does not return error if you try to bind with DN set and empty password - AD.
* Clearing the login/email spaces at the [start/end]
Export Pusher name as GITEA_PUSHER_NAME env variable
Export also GITEA_UUID, but keep the uuid env variable for backward compatibility
export pusher name ENV variable #316
change env variable prefix to GITEA_
Signed-off-by: Antonio Facciolo <afdev82@gmail.com>
Export also GITEA_UUID #316
Keep uuid env variable for backward compatibility
* Get rid of the bin folder within the build process
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Dropped latest make task, it is unused
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Added tidb tag to drone config
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Dropped the cert build tag
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Dropped useless minwinsvc build tag
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Dropped the useless build tags from drone config
Signed-off-by: Thomas Boerger <thomas@webhippie.de>
* Dropped unused codekit config
* Integrated dynamic and static bindata for public
* Ignore public bindata
* Add a general generate make task
* Integrated flexible public assets into web command
* Updated vendoring, added all missiong govendor deps
* Made the linter happy with the bindata and dynamic code
* Moved public bindata definition to modules directory
* Ignoring the new bindata path now
* Updated to the new public modules import path
* Updated public bindata command and drop the new prefix
In order to automatically build docker images I have re-enabled the
docker building parts within our drone runs on every push to master and
on every tag.
Signed-off-by: Thomas Boerger <tboerger@suse.de>
I have restructured the docker build process entirely, the binary gets
built outside of the docker build command, now we are managing all
dependencies with real Alpine packages and I have dropped features like
socat or the cron daemon.
Signed-off-by: Thomas Boerger <tboerger@suse.de>
Add a sibling to ExecDir which is capable of specifying environment variables,
so that we can invoke `git` with GIT_INDEX_FILE, GIT_DIR, etc..
For #258
- Download filename was wrong for files other than images. Example: It was `download` instead of `file.pdf`
- PDF was downloading instead of showing on browser
* Handle user ssh key input better
ssh_key: when user submitted keys had a newline at the end, strings.Split
would have created a slice with an empty last element, and the key type
check would be incorrect. Perhaps a better way is to look for 'ssh-rsa' or
'ssh-dsa' at the beginning of the string, but this is simple.
* ssh_key: correct indentation
* golint fixed for parts of routers root, dev and org dirs
* add user/auth.go golint fixed
* rename unnecessary exported to unexported and user dir golint fixed
* Write LDAP, SMTP, PAM, DLDAP back to all uppercase
* Fix type in unused constant name
* Other MixCased fixes
* Complete MixerCasing of template constants
* Re uppercase LTS and LDAPS suffixes
* Uppercase JSON suffix in constant names
* Proper case LoginNoType
* Prefix unexported template path constants with "tpl"
Still use GOGS_WORK_DIR and GOGS_CUSTOM env variables
as a fallback if the equivalent GITEA_* are not set,
warning user about the need for change.
Does not change "gogs" to "gitea" in webhook type name
Because "gogs" hook type is part of the API (routes) and used
in templates...
Closes#87
* Dropped codebeat, we got go reportcard
* Dropped gopm file, we are using govendor
* Dropped chinese readme, this should be part of the docs
* Dropped bra config, not really used
* Dropped packager, we will provide our own packages
* Can use a predefined set of labels
* Change UI
* Fix HTML file indentation
* Avoid reading file from other directory (security issue)
* Apply a better fix
* Remove not used variable
* Merge upstream/develop
* Do modifications
* Raname
* remove binding + rename variable
* Implement wiki mirroring, add Update mirrors operation to admin dashboard
* bindata.go update after merge
* Implement checking Git repo endpoint existence, support for BB included
* Remove admin dashboard operation
Fix bindata.go
* Apply gofmt to repo model file
* Try to remove bindata from PR
* Revert accepted wiki names change in favor of better system
* Remove unused imports
This is an attempt to fix#3089 following the strategy introduced
in d625e41c6c, although that strategy
by itself does not seem to be sufficient.
What needs be done is honouring the redirect_url query parameter
from the auth router.
* Do not show the "Sign up for free" button in issue tracker
The "Sign in to comment" link is good enough and will correctly
show or not show the "Sign Up" button link for those not having
an account already.
Fixes#3407 (link to nowhere when registration is disabled)
* Move html from translation to template
* Remove extra space in `{{ .SignInLink }}`.
* add git-daemon-export-ok "support"
* Slight fix to git-daemon-export-ok
* Add error-checking for git-demon-export-ok
* Remove old comments and fixed logging-issues
* Check if git-daemon-export-ok exists or not
* Add support for federated avatars
Fixes#3105
Removes avatar fetching duplication code
Adds an "Enable Federated Avatar" checkbox in user settings
(defaults to unchecked)
Moves avatar settings all in the same form, making
local and remote avatars mutually exclusive
Renames UploadAvatarForm to AvatarForm
as it's not anymore only for uploading
* Run gofmt on all modified files
* Move Avatar form in its own page
* Add go-libravatar dependency to vendor/ dir
Hopefully helps with accepting the contribution.
See also #3214
* Revert "Add go-libravatar dependency to vendor/ dir"
This reverts commit a8cb93ae640bbb90f7d25012fc257bda9fae9b82.
* Make federated avatar setting a global configuration
Removes the per-user setting
* Move avatar handling back to base tool, disable federated avatar in offline mode
* Format, handle error
* Properly set fallback host
* Use unsupported github.com mirror for importing go-libravatar
* Remove comment showing life exists outside of github.com
... pity, but contribution would not be accepted otherwise
* Use Combo for Get and Post methods over /avatar
* FEDERATED_AVATAR -> ENABLE_FEDERATED_AVATAR
* Fix persistance of federated avatar lookup checkbox at install time
* Federated Avatars -> Enable Federated Avatars
* Use len(string) == 0 instead of string == ""
* Move import line where it belong
See
https://github.com/Unknwon/go-code-convention/blob/master/en-US/import_packages.md
Pity the import url is still the unofficial one, but oh well...
* Save a line (and waste much more expensive time)
* Remove redundant parens
* Remove an empty line
* Remove empty lines
* Reorder lines to make diff smaller
* Remove another newline
Unknwon review got me start a fight against newlines
* Move DISABLE_GRAVATAR and ENABLE_FEDERATED_AVATAR after OFFLINE_MODE
On re-reading the diff I figured what Unknwon meant here:
https://github.com/gogits/gogs/pull/3320/files#r73741106
* Remove newlines that weren't there before my intervention
- Try to reduce memory allocations
- Add possibility to disable diff highlight (can improve performance for large diffs)
- Tweaking with cost for prettier (cleaner) diffs
- Do not calculate diff when the number of removed lines in a block is not equal to the number of added lines (this usually resulted in ugly diffs)
* Fix#3315: Release dont use tag creation date
* Simplify code and apply gofmt
* remove useless block (ctx.Repo.GitRepo.GetTag) on EditReleasePost
* apply gofmt on modified files
* Add API support for labels.
* Error handling for adding/replacing multiple issue labels
* Revisions to function names and error handling. Use issue.ClearLabels in replace/clear functions
* Additional code cleanup
* Add support for .diff and .patch
Add the ability to get text-diff and format-patch by adding .diff or
.patch in the end of a commit url. Issue #2641
* models: git_diff: various fixes
* Renames commitId to commitID.
* Writes stderr to a bytes.Buffer and displays proper error message on
command failure.
* Various style changes.
Signed-off-by: Dennis Chen <barracks510@gmail.com>
If anonymous (not signed in user) requests page
"/:owner/:repo/pulls" he gets an error:
template: repo/issue/list:11:105: executing "repo/issue/list" at <.PullRequestCtx.Base...>: nil pointer evaluating *models.Repository.Link
This commit fixes that.
Signed-off-by: Dmitry Yu Okunev <dyokunev@ut.mephi.ru>
Since the release struct is initialized with the current `HEAD` of the
current `release.Target` the commit id has to be updated if the tag
commit already exists. Otherwise the linked commit on the release page
will target the current `HEAD` at release time.
When calculating the current behind commit count the calculation should
use the current release target to get the total commit count. Should the
release target not exist anymore the calculation will return zero for
the newest release on that target. Older releases on that target will then
use that calculated commit count as reference.
The only use case that is now somehow invalid is when the release target
was merged / deleted after a tag on that release target:
master 1 - - - - - - - 6
\ /
branch 2 - 3 - 4 - 5
When `4` is the last tag on branch `branch` and the branch `branch` is not
yet deleted the calculated numbers would be:
1 commits to branch since this release
Now if the branch `branch` gets deleted the calculation function will not
find the branch and use the commit count of the newest release (`4`) as
reference resulting in:
0 commit to branch since this release
This fixes#3326
Allows the deletion of a webhook from a repository at the
/:user/:repo/hooks/:id endpoint.
Solves drone/drone issue #1603.
Signed-off-by: Dennis Chen <barracks510@gmail.com>
Executed go fmt
getEngine() not handles DB parameters (#2972) (#2974)
Uses .AllCols() for Update in updateMirror()
Spanish traslation removed
Fixed a wrong way to ommit the --prune option in process.ExecDir() for MirrorUpdate function
Re: issues gogits/gogs#2863 and gogits/gogs#3231
As a result of modifications to the contents of the conf folder, `make bindata`
was run, causing an update to bindata.go.
Meta
-----
This commit will be rebased onto the 'develop' branch.
Also changes the avatar from a jpeg to a png, to allow for
transparent background. The indexed png is also smaller in size.
Note that at the moment the default avatar is only used when
the user requested a custom avatar and the custom avatar file
is not found (should never happen).
In the future the default avatar could be used as a default
return when by-mail avatar lookups fail too (both gravatar
and libravatar support passing a default)
Always send user to settings screen to change avatar.
Drops "change_custom_avatar" localized message, keeps "change_avatar"
for the generic one.
NOTE: only changes the en-US locale, as per
https://github.com/gogits/gogs/wiki/Contributing-Code#those-we-do-not-accept
NOTE: requires rebuild of bindata.go to fully see effects
From https://godoc.org/crypto/tls#Config
ServerName is used to verify the hostname on the returned
certificates unless InsecureSkipVerify is given. It is also included
in the client's handshake to support virtual hosting unless it is
an IP address.
This is needed for certificate validation without InsecureSkipVerify.
* Do not write HTML in text/plain mail part
Fixes#2928
* Pass text/plain first, text/html second
* Do not send plain/text email if html2text failed (untested)
Build only work with the current master of the package. Otherwise, I get this error.
```
...
# github.com/gogits/gogs/routers/api/v1/convert
routers/api/v1/convert/convert.go:200: undefined: gogs.Team
routers/api/v1/convert/convert.go:201: undefined: gogs.Team
...
```
* docker: update build script to use glide + make
- docker/build.sh will now use glide to fetch dependencies
- glide is built from source to keep compatibility with arm
(no pre-prebuilt binary for arm)
- docker/build.sh will also now use the provided Makefile
It will generate an error when trying to get git build has as we do
not ship the 88mo .git directory during the build (should not cause
any problem as the variable it sets was not set previously)
* docker: fix docker arm build
- drop gosu version back to 1.7 as gosu binary for armhf is broken
- see tianon/gosu#19
* docker: update gosu to 1.9
Signed-off-by: Jean-Philippe Roemer <jp@roemer.im>
* Add and start jQuery AreYouSure
* Update SimpleMDE to 1.10.1 for `forceSync` support
* Forgot to remove old version SimpleMDE 1.10.0
* formatting -.-
When use builtin SSH server with concurrent operations, there are probabilities
One connection could use the command from another connections.
Fix this by set SSH_ORIGINAL_COMMAND for each command, not set in global scope.
Replace spaces with "%20" in "urlPrefix", before markdon processing.
The spaces were causing blackfriday (markdown processor) to behave
strange. This fixes#2545.
This allows the user to specify build flags from the make command
line. For example to force a complete rebuild one could use:
make BUILD_FLAGS='-v -a' TAGS="sqlite"
Make user search function look in username (lower_name), full name
(full_name) and primary email (email). This will benefit searching after
user in "explore", admin panel and when adding new collaborators.
Set the description meta tag correctly when there is no repo
description. Also use the ability to trim trailing whitespaces,
to make the template cleaner.
I've noticed that a lot of issues cannot be reproduced on http://try.gogs.io,
which either hints about specific database type problems or
hints about bugs which are already solved in the newer version
(as http://try.gogs.io is usually a newer build).
This patch adds the suggestion to test the issue at http://try.gogs.io in
the Github "issue template". The user can answer: "Yes", "No", "Not relevant".
"Not relevant" is an option where testing on http://try.gogs.io makes no sense as
the bug is unrelated to the Web UI or is very specific in nature.
- Remove the known issue about `.dockerignore` being ignored during DockerHub automated build as this has been fixed
- Added a note on the fact that we currently do no support building the container on RPi1
- Upgrade of gosu to v1.7
- Change in docker/build.sh to use `--no-cache` to prevent APKINDEX creation when installing dev dependencies
- Manual upgrade of Alpine on Raspberry Pi when building to make sure the environment is the same as the standard Dockerfile
Config option [server] SSH_LISTEN_PORT to the port the builtin SSH server will be listen.
It can be different from SSH_PORT which is supposed to be exposed in the clone URL.
This should solve the problem when user runs Gogs inside Docker container
and still want to use builtin SSH server.
This is feature is workaround for #2628 (JumpCloud) and some other services
that allow LDAP search only under BindDN user account, but not allow any LDAP
search query in logged user DN context.
Such approach is an alternative to minimal permissions security pattern for
BindDN user.
According to RFC 4511 4.2.1. Processing of the Bind Request "Clients may send
multiple Bind requests to change the authentication and/or security
associations or to complete a multi-stage Bind process. Authentication from
earlier binds is subsequently ignored."
Therefore we should not use 2 connections, but single one just sending two bind
requests.
- s6 is in main in 3.3, so we no longer need to mangle the repos file
- official image is periodically updated, so it's not preferred to do
upgrades downstream (usually harmless, but inelegant)
- apk-tools in 3.3 supports --no-cache to avoid leaving the APKINDEX
files in the image
When <code> is nested inside <pre>, the next end tag token would not able to be the same
as outer-most start tag. So we only check outer-most start and end tag token to be the same.
Remove the possibility of using email as user name when user actually push
through combination of email and password with HTTP.
Also refactor update action function to replcae tons of arguments with
single PushUpdateOptions struct.
And define the user who pushes code as pusher, therefore variable names shouldn't
be confusing any more.
The old API was using []byte, but was changed to string without running
the tests again.
It also sets the variables from the configuration to make them work.
Maybe there is a better way to do this.
This commit adds the possibibility to use either the native golang
libraries or ssh-keygen to check public keys. The check is adjusted
depending on the settings, so that only supported keys are let through.
This commit also brings back the blacklist feature, which was removed in
7ef9a05588. This allows to blacklist
algorythms or keys based on the key length. This works with the native
and the ssh-keygen way.
Because of #2179 it also includes a way to adjust the path to
ssh-keygen and the working directory for ssh-keygen. With this,
sysadmins should be able to adjust the settings in a way, that SELinux
is okay with it. In the worst case, they can switch to the native
implementation and only loose support for ed25519 keys at the moment.
There are some other places which need adjustment to utilize the
parameters and the native implementation, but this sets the ground work.
- Add the crond init script for s6
- Add the RUN_CROND configuration variable to setup crond
- Crond will not be run by default (hence the `down` file in the service directory)
- `start.sh` check if RUN_CROND = "true" || "1" and remove this file to tell s6 to run the initscript
- Resolves#2597
When repository contains a Slack type hook,
it changes original payload content.
This patch fixes it by using a local object to store
newly created Slack payload instead of assigning
back to the same variable.
- Dockerfile.rpi now uses hypriot/rpi-alpine-scratch as base (build script are available w/ a better maintainer & more updates)
- Dockerfile.rpi updates alpine from v3.2 to v3.3 to be on par with Dockerfile
- Dockerfile now uses alpine:3.3 as base
- Dockerfile.rpi now uses v3.3/community repository without pinning
- Go package is no longer fetched using repository pinning
- Fixes problem while using repository pinning & virtual package at the same time
- Add nsswitch.conf to configure LibC Name Service inside the container
- Change my email in the Dockerfile
- Update build script to install software as a `build-deps` virtual package so that adding a package to it will be automatically removed at the end of the build script
According to the docs [1], the Reply method must be called for all
requests where WantReply is true. This fixes a hanging java ssh
implementation (jsch) which sets WantReply flag and waits for reply from
the server.
[1] https://godoc.org/golang.org/x/crypto/ssh#Request.Reply
Using this script:
1. Copy scripts/launchd/io.gogs.web.plist into /Library/LaunchDaemons
2. The script assumes Gogs is running under 'gogs' user and group, modify
/Library/LaunchDaemons/io.gogs.web.plist if you want to user different user.
3. The script assumes Gogs is installed in /Users/git/gogs, modify
/Library/LaunchDaemons/io.gogs.web.plist if you installed Gogs in different
location.
4. Once you are sure that running Gogs manually via `gogs web` works fine, run
it as a launchd service with:
sudo launchctl load -F /Library/LaunchDaemons/io.gogs.web.plist
From now on launchd will ensure Gogs is running, eg. when system is restarted.
If the init script is called with `status`, the rc.subr(8) routines check if
the first argument associated with the pid in the pidfile is equal to
`procname`. By default, `procname` is equal to the value of `command`. In our
case, `command` contains a space (i.e. has multiple arguments), so `procname`
can never be equal to the first argument of the command associated with the
pid.
Set `procname` to the first argument of `command` to fix the `status` command
of the init script.
Local (DMZ) URL for gogs workers (such as ssh update) accessing web service. In
most cases you do not need to change default http://localhost:HTTP_PORT/. You
may need to alter it only if your ssh server node is not the same as http node,
eg. running behind proxy on different node than web server.
--- 80 public port -> 8080 -- web server node
/
public proxy --<
\
--- 22 public port -> 10022 -- ssh server node
This option is not intended to be accessible via web GUI settings, since it is
unlikely someone needs to change it to somethings else than default
http://localhost:HTTP_PORT/ which should work for most of the cases.
But this should land into the documentation somewhere.
fixup
This is achieved by adding public/css/gogs.css to special .IGNORE target, which
makes inability to generate/update gogs.css non-fatal and not stopping whole
build process. User is still notified about missing lessc command though, since
inability to update CSS may lead to potential problems:
lessc public/less/gogs.less public/css/gogs.css
make: lessc: No such file or directory
make: [public/css/gogs.css] Error 1 (ignored)
More info at:
https://www.gnu.org/software/make/manual/html_node/Special-Targets.html
I've mostly duplicated the dropdown code from repo/home.tmpl, which
basically only required a change to the URL. This could probably be
broken out into something more modular.
We can look at the PushCommits object to see how many commits were
included in a commit, and add some template logic to only show the
comparison link when there are at least 2 commits in a push. We also
correct the link to display the number of commits.
This commit improves templates readability, since all of them use consistent
indent with all template command blocks indented too.
1. Indents both HTML containers such as <div>, <p> and Go HTML template blocks
such as {{if}} {{with}}
2. Cleans all trailing white-space
3. Adds trailing last line-break to each file
Most commit in Git are expected to follow standard of single header line,
followed by description paragraphs, separated by empty line from previous block.
Previously Gogs were treating everything as single header. Now we are trying to
render only first line as header, but following lines (description chunks) as a
verbatim.
With grey SHA1 labels, we should consider having also more subtle strips on
commits list. As current strips blend too much with grey SHA1 labels and top
bar, making hard to distinguish headers from content.
Current green SHA1 labels are more pronounced than other UI elements attracting
attention as if they were most important thing in the UI, while they are not as
important, especially without real Git client.
Using grey SHA1 labels makes the UI more balanced, less aggressive and lets
user to focus on other content elements.
NOTE: Neither GitHub or Bitbucket uses so heavy pronunciation as Gogs.
This uses a CSS trick making first th to be relative block with width equal to
first two columns, effectively working around inability to use colspan="2" on
first row that was breaking "fixed-layout" for tables.
Also use grey header for last-commit SHA1 tag.
Just use secondary menu instead custom ".head.meta", which simplifies code.
Also do not display repo URL action when we are in subdirectory or viewing a
file.
We have new tab, but we had no entry. That's why it was showing "code"
(lowercase) as this is text id, where we were expecting properly title cased
"Code" to be shown in English version.
Also add Polish translation "code=Kod".
Instead using own ellipsis, uses Semantic UI fixed single line table which
effectively applies ellipsis to all overflowing table cells.
NOTE: File list cannot use colspan="2" for 1st "Last commit" elements,
otherwise layout breaks with fixed table.
Semantic UI .icon 1em font-size has priority over .octicon 16px, resulting
octicons rendered at 14px font-size, which is not okay since Octicons are meant
to be shown sizes that are multiples of 16px.
Consider following LDAP search query example:
(&(objectClass=Person)(|(uid=%s)(mail=%s)))
Right now on first login attempt Gogs will use the text supplied on login form
as the newly created user name. In example query above the text matches against
both e-mail or user name. So if user puts the e-mail then the new Gogs user
name will be e-mail which may be undesired.
Using optional user name attribute setting we can explicitly say we want Gogs
user name to be certain LDAP attribute eg. `uid`, so even user will use e-mail
to login 1st time, the new account will receive correct user name.
This speeds up single build/rebuild rather than install & build which compiles
everything twice, we just copy installed binary back to the project root.
Now, the dump cmd uses setting.CustomPath and setting.LogRootPath
instead of setting.WorkDir which was kind of broken if the gogs
binary was in a different directory than gogs data.
Additionally, the backup of setting.CustomPath directory is only done
if it exists.
Using a tmp dir makes gogs dump more robust to concurrent runs.
It also permits an easier cleaning of the tmp files (gogs-db.sql and
gog-repo.zip) by just removing the tmp dir.
As a side effect, it partially fix bugs on workdir.
Previously, 'gogs dump' created the archives in the current directory,
and tried to include these archives from the directory where the
gogs binary lies.
ex: if gogs binary is in /usr/bin/gogs, and gogs dump is run from /tmp/,
/tmp/gog-repo.zip is created, but gogs dump tried to include
/usr/bin/gogs-repo.zip.
The dump cmd did not check the return value of the z.AddFile or
z.AddDir when building the final archive.
It caused the dump command to succeed even if an error occurred.
The resulted dump archive could be corrupted/empty.
(errors could be various: removal by a concurrent process, disk full,
bugs in the dump cmd itself)
- Resolve#1893
- Add syslogd to output sshd log on stdout (via `docker logs`)
- Enforce directory rights on `/data/git`, `/data/gogs` & `/data/ssh`
- Add `SOCAT_LINK` environment variable to prevent the creation of scout links when they are not needed (see #1815)
- `start.sh` will now verify that the port is not already used by another service
- Resolve#1807
- Log when a service is created, or could not be created
- Keep track of which port is already used, including goes & sshd port
- ssh/setup: test directive now check if a file exist in key path instead of a folder
- ssh/setup script was hanging waiting for an input about rewriting the key
as the test case was returning true, when it should have been false
(check if file is a folder instead of a file)
- Volumed subfolder now created up in the ENTRYPOINT script, this way
they are created before S6 even starts making VOLUME.
- The subfolder will be created during VOLUME creation too as ENTRYPOINT
script will be run before /bin/true
- SSH Keys will now be created on a single key basis not replying on the
existence of /data/ssh folder
- Now using a setup script before starting the app. The separation of
the run script and the setup script will make service initialisation a
little bit clearer
- Now calling start.sh script as ENTRYPOINT and S6 as CMD. This way
when running the container with just a shell script, the start.sh
script will be launched before, making debugging easier
- Added note about `.dockerignore` ignored during Docker Hub Automated
Build
- VOLUME for ‘/data’
- Usage of S6 as PID 1 Process
- Usage of ‘socat’ so linked container (like databases) are binded to
localhost
- OpenSSH, Socat Link and Gogs are supervised using S6
- Size of container reduced to ~75Mo
The IsAdmin flag is set based on whether the admin filter
returned any result. The admin filter is applied with the user dn
as the search root.
In the future, we should update IsAdmin as well on each login.
Alternately, we can have a periodic sync operation.
The button appears when a file is viewed in a branch or a tag. It points
to a URL containing the branch's (or tag's) current commit id so that
it'll always point to the same content.
- use start-stop-daemon's chuid feature insted of su
- using `su -c` breaks if the git user has no usable shell
- this fixes#1025
- put --test before --exec, instead it gets passed to gogs
- set cwd via --chdir
If users are added to gogs due a reverse proxy automatically, their password is
set to their initial username. If their username is shorter than 6 characters,
they can never set a password. But since this password is required for some
operations (e.g. repository deletion), they could not use all features of gogs
until now.
Fixed an issue where the post intall file for Debian enforced port 6000
which should have been port 3000 because it renders the software virtually unusable
because it's a blocked port in Firefox, Chrome and alikes.
For further reference see:
http://www-archive.mozilla.org/projects/netlib/PortBanning.html
html, etc
According to http://golang.org/pkg/net/http/#DetectContentType
"If the Header does not contain a Content-Type line, Write adds
a Content-Type set to the result of passing the initial 512 bytes
of written data to DetectContentType."
HTML tags are no longer processed for special links, etc
Contents of <a>, <code> and <pre> are not processed for special links
Processing for special links is done after Markdown conversion
Not sure why, but xorm ignores the num_issues and num_closed_issues
columns when updating, even though the values changed.
Listing them explicitly fixes the issue with the wrong issue counts
The normal go get protocol is to show the go-import meta tag when ?go-get=1 is appended to the url. This commit implements that behaviour and cleans the go-get option from the repository settings page.
The "PHP" formatting function doesn't add anything, except an undocumented date format.
All usages in the templates have been replaced with DateFmtShort and DateFmtLong for convenience.
This is a balance between speed and nice code, where speed has won. To prevent a repository query for each action the ownername is match with the current user.
It would be "cleaner" or "better" if we fetch the repository each time. Another option is to add the RepoOwnerID to action
The old migration had a few issues:
- It left old column names around
- It did not give the right access levels for owners and admins
Also, this includes a migration that fixes the authorization of owner teams, which was previously ORG_ADMIN (instead of ORG_OWNER)
This commit does a lot of the work of refactoring the access table in a table with id's instead of strings.
The result does compile, but has not been tested. It may eat your kittens.
This commit does a lot of the work of refactoring the access table in a table with id's instead of strings.
The result does compile, but has not been tested. It may eat your kittens.
Code-wise: the fixing-part of the code now doesn't reference the issue any more, because this is done by the referencing-part of the code, which is called just before.
Fixes#462, #668, #732.
- **Merge fix commits detected**: Found 1 commits with messages like 'fix merge' detected after merges. (-3 pts)
- **Duplicate commits with identical content**: Found 1 groups of commits with identical file content (1 redundant commits). These are safe to squash as they have the same tree SHA. (-7 pts)
- **Commits with duplicate messages**: Found 1 groups of commits with identical messages but different code changes (135 commits). Consider using more descriptive messages to differentiate changes. (-1 pts)
-d '{"tag_name":"'"$TAG"'","name":"GitCaddy Server '"$TAG"'","body":"Official release of GitCaddy Server '"$TAG"'.","draft":false,"prerelease":false}' \
description:Found something you weren't expecting? Report it here!
labels:["type/bug"]
body:
- type:markdown
attributes:
value:|
NOTE: If your issue is a security concern, please send an email to security@gitea.io instead of opening a public issue.
- type:markdown
attributes:
value:|
1. Please speak English, this is the language all maintainers can speak and write.
2. Please ask questions or configuration/deploy problems on our Discord
server (https://discord.gg/gitea) or forum (https://forum.gitea.com).
3. Make sure you are using the latest release and
take a moment to check that your issue hasn't been reported before.
4. Make sure it's not mentioned in the FAQ (https://docs.gitea.com/help/faq)
5. It's really important to provide pertinent details and logs (https://docs.gitea.com/help/support),
incomplete details will be handled as an invalid report.
- type:textarea
id:description
attributes:
label:Description
description:|
Please provide a description of your issue here, with a URL if you were able to reproduce the issue (see below)
If you are using a proxy or a CDN (e.g. Cloudflare) in front of Gitea, please disable the proxy/CDN fully and access Gitea directly to confirm the issue still persists without those services.
- type:input
id:gitea-ver
attributes:
label:Gitea Version
description:Gitea version (or commit reference) of your instance
validations:
required:true
- type:dropdown
id:can-reproduce
attributes:
label:Can you reproduce the bug on the Gitea demo site?
description:|
If so, please provide a URL in the Description field
In addition, if your problem relates to git commands set `RUN_MODE=dev` at the top of app.ini
- type:input
id:logs
attributes:
label:Log Gist
description:Please provide a gist URL of your logs, with any sensitive information (e.g. API keys) removed/hidden
- type:textarea
id:screenshots
attributes:
label:Screenshots
description:If this issue involves the Web Interface, please provide one or more screenshots
- type:input
id:git-ver
attributes:
label:Git Version
description:The version of git running on the server
- type:input
id:os-ver
attributes:
label:Operating System
description:The operating system you are using to run Gitea
- type:textarea
id:run-info
attributes:
label:How are you running Gitea?
description:|
Please include information on whether you built Gitea yourself, used one of our downloads, are using https://demo.gitea.com or are using some other package
Please also tell us how you are running Gitea, e.g. if it is being run from docker, a command-line, systemd etc.
If you are using a package or systemd tell us what distribution you are using
description:Something doesn't look quite as it should? Report it here!
labels:["type/bug","topic/ui"]
body:
- type:markdown
attributes:
value:|
NOTE: If your issue is a security concern, please send an email to security@gitea.io instead of opening a public issue.
- type:markdown
attributes:
value:|
1. Please speak English, this is the language all maintainers can speak and write.
2. Please ask questions or configuration/deploy problems on our Discord
server (https://discord.gg/gitea) or forum (https://forum.gitea.com).
3. Please take a moment to check that your issue doesn't already exist.
4. Make sure it's not mentioned in the FAQ (https://docs.gitea.com/help/faq)
5. Please give all relevant information below for bug reports, because
incomplete details will be handled as an invalid report.
6. In particular it's really important to provide pertinent logs. If you are certain that this is a javascript
error, show us the javascript console. If the error appears to relate to Gitea the server you must also give us
DEBUG level logs. (See https://docs.gitea.com/administration/logging-config#collecting-logs-for-help)
- type:textarea
id:description
attributes:
label:Description
description:|
Please provide a description of your issue here, with a URL if you were able to reproduce the issue (see below)
If using a proxy or a CDN (e.g. CloudFlare) in front of gitea, please disable the proxy/CDN fully and connect to gitea directly to confirm the issue still persists without those services.
- type:textarea
id:screenshots
attributes:
label:Screenshots
description:Please provide at least 1 screenshot showing the issue.
validations:
required:true
- type:input
id:gitea-ver
attributes:
label:Gitea Version
description:Gitea version (or commit reference) your instance is running
validations:
required:true
- type:dropdown
id:can-reproduce
attributes:
label:Can you reproduce the bug on the Gitea demo site?
description:|
If so, please provide a URL in the Description field
URL of Gitea demo: https://demo.gitea.com
options:
- "Yes"
- "No"
validations:
required:true
- type:input
id:os-ver
attributes:
label:Operating System
description:The operating system you are using to access Gitea
- type:input
id:browser-ver
attributes:
label:Browser Version
description:The browser and version that you are using to access Gitea
1. Make sure you are targeting the `main` branch, pull requests on release branches are only allowed for backports.
2. Make sure you have read contributing guidelines: https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md .
3.For documentations contribution, please go to https://gitea.com/gitea/docs
4. Describe what your pull request does and which issue you're targeting (if any).
5. It is recommended to enable "Allow edits by maintainers", so maintainers can help more easily.
6. Your input here will be included in the commit message when this PR has been merged. If you don't want some content to be included, please separate them with a line like `---`.
7. Delete all these tips before posting.
<!-- end tips -->
1. Make sure you are targeting the `master` branch, pull requests on release branches are only allowed for bug fixes.
# This file tracks false positives identified by AI evaluation or manually marked.
# Each line is a JSON object with the following fields:
# - contentHash: SHA256 hash prefix of the secret content
# - patternId: The pattern that detected this secret
# - filePath: Relative path where the secret was found
# - reason: Why this was marked as a false positive
# - confidence: AI confidence level (if from AI evaluation)
# - addedAt: Timestamp when this entry was added
#
# You can safely commit this file to share false positive markers with your team.
# To remove an entry, simply delete the corresponding line.
{"contentHash":"9851b69c92aa453f","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_ldap_test.go","reason":"AI: This is a test file (admin_auth_ldap_test.go) containing mock LDAP configuration data. The password 'secret-bind-full' appears in test case 0 of the TestUpdateLdapBindDn function as part of test fixture data. This is the same placeholder password used consistently throughout the test cases to verify LDAP configuration update functionality, not a real credential.","confidence":95,"addedAt":1769251368809}
{"contentHash":"03e10948783bbdf5","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_oauth_test.go","reason":"AI: Another instance of 'some_secret' placeholder in test code validating OAuth configuration with custom URLs and options. This is part of a test case structure verifying command functionality with mock data, not real secrets.","confidence":95,"addedAt":1769251382118}
{"contentHash":"13d1fe05e3c21c82","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_oauth_test.go","reason":"AI: This is test code with a placeholder value 'some_secret' used to test OpenID Connect configuration. The test is validating the command-line argument parsing and source creation logic, not using real credentials. The obvious placeholder naming confirms this is mock data.","confidence":95,"addedAt":1769251382118}
{"contentHash":"9432c43933e1ef7b","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_oauth_test.go","reason":"AI: Another 'old_secret' placeholder in test code representing the existing authentication source configuration before an update operation. This is clearly mock data used for testing update functionality, not a real credential.","confidence":95,"addedAt":1769251382118}
{"contentHash":"ed683dd7d1dc00b8","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_oauth_test.go","reason":"AI: Placeholder value 'new_secret' used in test code to verify OAuth source update functionality. This is mock data representing the updated configuration in a unit test, not a real secret. The generic naming and test context confirm this is test data.","confidence":95,"addedAt":1769251382118}
{"contentHash":"8bd6834507ca39fd","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\admin_auth_oauth_test.go","reason":"AI: Placeholder value 'new_secret' in test code validating OAuth configuration updates with various options. This is mock data used to test command-line argument parsing and update logic, not a real secret. The test file context and generic naming confirm this is test data.","confidence":95,"addedAt":1769251382118}
{"contentHash":"4f1184f8d8a07ac4","patternId":"password-assignment","filePath":"..\\gitcaddy\\cmd\\gitea-cli\\cmd\\auth.go","reason":"AI: This is a false positive. The detected pattern 'Toke********************ng('\"' is part of a code statement 'fmt.Print(\"API Token: \")' which is simply printing a prompt message to the user asking them to input their API token. This is not an actual secret value, but rather a string literal used for user interface purposes. The detection appears to have matched on the word 'Token' in the prompt text.","confidence":95,"addedAt":1769251386709}
{"contentHash":"64458673e0e2cd18","patternId":"password-assignment","filePath":"..\\gitcaddy\\models\\fixtures\\oauth2_application.yml","reason":"AI: This is a test fixture file (oauth2_application.yml in fixtures directory) containing bcrypt hashed passwords for testing purposes. The comment explicitly reveals the plaintext value being hashed ('4MK8Na6R55smdCY0WuCCumZ6hjRPnGY5saWVRHHjJiA='), which would never be done with real secrets. The application name is 'Test native app' and this is clearly mock data for development/testing. Additionally, it's the same hash as line 6, indicating reused test data.","confidence":95,"addedAt":1769251392454}
{"contentHash":"2410892c2b5c9790","patternId":"password-assignment","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\pulls\\2.patch","reason":"AI: This is a placeholder password value 'password' in a git patch file within a test repository directory (modules/git/tests/repos/repo1_bare/pulls/). The code shows example database connection configuration with generic placeholder values including user='user' and passwd='password'. This is clearly example/demo code meant for testing purposes, not a real credential.","confidence":95,"addedAt":1769251396694}
{"contentHash":"e83481b3cec3e3d6","patternId":"password-assignment","filePath":"..\\gitcaddy\\modules\\hcaptcha\\hcaptcha_test.go","reason":"AI: This is a dummy/test secret value used in test code (hcaptcha_test.go). The constant is explicitly named 'dummySecret' and has the value '0x0000000000000000000000000000000000000000' which is an obviously fake placeholder consisting of all zeros. It's used in a mockTransport test setup to simulate hCaptcha API responses.","confidence":95,"addedAt":1769251402615}
{"contentHash":"c07aec1b54a1b36c","patternId":"password-assignment","filePath":"..\\gitcaddy\\modules\\hcaptcha\\hcaptcha_test.go","reason":"AI: This is a dummy/test token value used in test code (hcaptcha_test.go). The constant is explicitly named 'dummyToken' and has the value '10000000-aaaa-bbbb-cccc-000000000001' which is an obviously fake placeholder with repeated simple patterns (aaaa, bbbb, cccc). It's used alongside dummySiteKey and dummySecret in mock test scenarios.","confidence":95,"addedAt":1769251402615}
{"contentHash":"1d7159caedd002e9","patternId":"basic-auth-header","filePath":"..\\gitcaddy\\modules\\markup\\markdown\\renderconfig.go","reason":"AI: This is a false positive. The detected pattern 'Basi********************nfig' on line 65 is actually part of the variable name 'stringBasic' in the code 'var stringBasic controlStringRenderConfig'. This is a Go variable declaration where 'stringBasic' is the variable name and 'controlStringRenderConfig' is the type. The pattern matcher incorrectly identified this as a Basic Auth header due to the substring 'Basic' appearing in the variable name, but it's clearly just a variable name in source code, not a credential.","confidence":99,"addedAt":1769251407186}
{"contentHash":"1b72af0fa08df201","patternId":"password-assignment","filePath":"..\\gitcaddy\\modules\\setting\\database_test.go","reason":"AI: This is a test file (database_test.go) containing unit test data. The password 'space space !#$%^^%^```-=?=' is clearly a test value designed to verify URL encoding of special characters in PostgreSQL connection strings. The test is validating that special characters are properly escaped in the connection string output.","confidence":95,"addedAt":1769251412433}
{"contentHash":"4df01e0e76f0e472","patternId":"password-assignment","filePath":"..\\gitcaddy\\modules\\setting\\database_test.go","reason":"AI: This is a test file (database_test.go) containing unit test data. The password 'I love Gitea!' is clearly a fake, human-readable test value used to verify PostgreSQL connection string generation. It's an obvious placeholder phrase that would never be used as a real password in production.","confidence":95,"addedAt":1769251412434}
{"contentHash":"26379cbd3ea2d55b","patternId":"bearer-token","filePath":"..\\gitcaddy\\routers\\api\\actions\\artifacts.go","reason":"AI: This is a reference to an environment variable name 'ACTIONS_RUNTIME_TOKEN' in a code comment explaining the authentication mechanism. The comment states 'action task call server api with Bearer ACTIONS_RUNTIME_TOKEN' which is describing the format of the authorization header, not exposing an actual token value. This is documentation within the code explaining how the API authentication works.","confidence":95,"addedAt":1769251416472}
{"contentHash":"0331542783bd4fab","patternId":"password-assignment","filePath":"..\\gitcaddy\\routers\\api\\v1\\user\\gpg_key.go","reason":"AI: This is not a hardcoded secret. The line reads 'ctx.APIError(http.StatusNotFound, \"None of the emails attached to the GPG key could be found. It may still be added if you provide a valid signature for the token: \"+token)' where 'token' is a variable being concatenated to an error message string. The token variable is dynamically generated by calling asymkey_model.VerificationToken(ctx.Doer, 1) earlier in the function. This is a false positive triggered by the word 'token' appearing in the error message string.","confidence":95,"addedAt":1769251422591}
{"contentHash":"6b203247c1054286","patternId":"password-assignment","filePath":"..\\gitcaddy\\routers\\api\\v1\\user\\gpg_key.go","reason":"AI: This is not a hardcoded secret. The line reads 'ctx.APIError(http.StatusUnprocessableEntity, \"The provided GPG key, signature and token do not match or token is out of date. Provide a valid signature for the token: \"+token)' where 'token' is a variable being concatenated to an error message string. The token variable is dynamically generated by calling asymkey_model.VerificationToken(ctx.Doer, 1) earlier in the function. This is a false positive triggered by the word 'token' appearing in the error message string.","confidence":95,"addedAt":1769251422591}
{"contentHash":"399cde2c3d56e22d","patternId":"password-assignment","filePath":"..\\gitcaddy\\routers\\web\\admin\\config.go","reason":"AI: This is not an actual password assignment but a string literal used for masking/shadowing passwords in configuration display. The line 'fields[i] = \"password=******\"' is part of the shadowPasswordKV function that replaces actual password values with asterisks for security when displaying configuration to admins. This is a hardcoded placeholder string used to hide real passwords, not a real credential.","confidence":95,"addedAt":1769251428203}
{"contentHash":"cd47a739ea9babee","patternId":"password-assignment","filePath":"..\\gitcaddy\\routers\\web\\admin\\users_test.go","reason":"AI: This is a test file (users_test.go) with a hardcoded password 'abc123ABC!=$' used in unit tests for creating mock users. The password is a simple test value used across multiple test functions to verify user creation functionality, not a real credential.","confidence":95,"addedAt":1769251435465}
{"contentHash":"d61031a12da2d6c1","patternId":"password-assignment","filePath":"..\\gitcaddy\\routers\\web\\user\\setting\\account_test.go","reason":"AI: This is a test password value 'Qwerty123456-' used in a unit test file (account_test.go) for testing password change functionality. The file contains multiple test cases with various password values to validate password complexity requirements, length checks, and matching logic. This is clearly test/mock data, not a real credential.","confidence":95,"addedAt":1769251439376}
{"contentHash":"e96bd4dc9f0e25fe","patternId":"password-assignment","filePath":"..\\gitcaddy\\sdk\\python\\gitea\\__init__.py","reason":"AI: This is a placeholder value 'your_token' used in documentation/example code within a docstring. The file is an __init__.py file containing example usage documentation showing how to use the GiteaClient API. The value is clearly a placeholder meant to be replaced by users with their actual token.","confidence":95,"addedAt":1769251443385}
{"contentHash":"68ead4d6f4aec16e","patternId":"password-assignment","filePath":"..\\gitcaddy\\sdk\\typescript\\src\\index.ts","reason":"AI: This is a placeholder string 'your_token' used in documentation/example code within a JSDoc comment block. The comment demonstrates how to use the GiteaClient SDK with example configuration. This is clearly示例代码 showing the API usage pattern, not an actual secret.","confidence":95,"addedAt":1769251450684}
{"contentHash":"390362fdd61c80b0","patternId":"password-assignment","filePath":"..\\gitcaddy\\services\\auth\\source\\smtp\\auth.go","reason":"AI: This is a variable name 'password' in a switch-case statement that checks the string value of 'fromServer' against the literal string 'Password:'. This is part of the SMTP LOGIN authentication protocol implementation where the code checks if the server is requesting a password prompt. The 'password' field is a struct member that holds user-provided credentials temporarily during authentication, not a hardcoded secret. The actual password value is passed in at runtime from the caller.","confidence":95,"addedAt":1769251455296}
{"contentHash":"bb2f71dc5cc74fbe","patternId":"password-assignment","filePath":"..\\gitcaddy\\services\\mailer\\sender\\smtp_auth.go","reason":"AI: This is not a hardcoded password value. Line 34 contains 'return []byte(a.password), nil' which is part of the SMTP authentication implementation. The 'a.password' is a struct field that holds a password parameter passed to the LoginAuth function at runtime. This is legitimate code for handling authentication credentials dynamically, not a hardcoded secret. The detected pattern appears to be a false positive triggered by the variable name 'password' and the surrounding code structure.","confidence":95,"addedAt":1769251459310}
{"contentHash":"1763852ca2c89db5","patternId":"password-assignment","filePath":"..\\gitcaddy\\services\\mailer\\token\\token.go","reason":"AI: This is a false positive. The detected pattern 'invalid email token: ' is part of an error message string literal in the Error() method implementation. It's not a password or secret, but rather a user-facing error message prefix that gets concatenated with context information. The pattern matcher likely triggered on the word 'token' in the string, but this is clearly just descriptive text for error handling.","confidence":95,"addedAt":1769251463754}
{"contentHash":"e982d83b21531e49","patternId":"password-assignment","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a test case string 'single_token' used in a unit test (TestGithubMultiToken) to verify token handling logic. The value is clearly a placeholder/mock value for testing purposes, not a real GitHub token. Real GitHub tokens follow specific formats (e.g., ghp_..., github_pat_...) and are much longer.","confidence":95,"addedAt":1769251469522}
{"contentHash":"033a75c6045db468","patternId":"password-assignment","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a test case string 'token1,token2' used in a unit test (TestGithubMultiToken) to verify multi-token handling logic. These are clearly placeholder/mock values for testing comma-separated token functionality, not real GitHub tokens. Real GitHub tokens follow specific formats and are much longer than these simple test strings.","confidence":95,"addedAt":1769251469522}
{"contentHash":"f6b0cff7303a5080","patternId":"password-assignment","filePath":"..\\gitcaddy\\templates\\admin\\user\\new.tmpl","reason":"AI: This is a false positive. The detected pattern is part of an HTML input element attribute 'data-password=\"required\"' which is a data attribute used for form validation logic, not an actual password value. The word 'password' here is being used as a configuration parameter to indicate that a password field is required, not as a secret credential.","confidence":95,"addedAt":1769251473444}
{"contentHash":"2e03469e8304b935","patternId":"basic-auth-header","filePath":"..\\gitcaddy\\templates\\repo\\settings\\webhook\\settings.tmpl","reason":"AI: This is a placeholder example value used in documentation/help text within an HTML template. The value 'Basic YWxhZGRpbjpvcGVuc2VzYW1l' is a well-known example from Aladdin:OpenSesame (the classic HTTP Basic Auth example from RFC 7617). It appears in an HTMLFormat helper function that generates example text to show users the format of authorization headers. The context shows it's part of a help span demonstrating valid formats alongside 'Bearer token123456'.","confidence":95,"addedAt":1769251479534}
{"contentHash":"9966f4023ce28cb1","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\e2e\\utils_e2e.ts","reason":"AI: This is a test file (tests/e2e/utils_e2e.ts) containing end-to-end test utilities. The constant LOGIN_PASSWORD = 'password' is a hardcoded test credential used for automated testing with Playwright. The value 'password' is a generic placeholder commonly used in test environments, not a real production secret. This is clearly test/mock code for setting up test user sessions.","confidence":95,"addedAt":1769251483544}
{"contentHash":"e70a46bffdc25be4","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\auth_ldap_test.go","reason":"AI: This is a test file (auth_ldap_test.go) containing mock LDAP user data. The password 'professor' is assigned to a test user named 'professor' in a struct used for integration testing. The value is clearly a simple test credential matching the username, used with mock LDAP server data (planetexpress.com domain, which is a reference to the TV show Futurama). This is test data, not a real secret.","confidence":95,"addedAt":1769251490634}
{"contentHash":"97128a8a2e492d81","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\auth_ldap_test.go","reason":"AI: This is a test file containing mock LDAP user data for integration testing. The password 'zoidberg' is assigned to a test user named 'zoidberg' in the otherLDAPUsers test data array. Like the other test users, this references a Futurama character with planetexpress.com email domain. The password matches the username, which is a common pattern in test data. This is clearly test/mock data, not a real secret.","confidence":95,"addedAt":1769251490635}
{"contentHash":"2f9fc8a44774390c","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\delete_user_test.go","reason":"AI: This is in a test file (tests/integration/delete_user_test.go) and references the same 'userPassword' variable as line 35. It's used in another integration test function (TestUserDeleteAccountStillOwnRepos) to test account deletion functionality. This is clearly test code using a shared test password constant, not a real secret.","confidence":95,"addedAt":1769251496735}
{"contentHash":"c66feceab8debfce","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\integration_test.go","reason":"AI: This is a constant string 'userPassword = \"password\"' defined in integration test code. It's used as a default password for test user accounts in the test suite, as evidenced by its usage in functions like 'loginUser' and 'loginUserWithPassword'. This is clearly test/mock data for integration testing purposes, not a real production credential.","confidence":95,"addedAt":1769251500617}
{"contentHash":"c9a5755bf8341e87","patternId":"basic-auth-header","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: This is the same Base64-encoded Basic Auth header reused in the same TestOAuthIntrospection test function to test the introspection endpoint with valid credentials. It's part of the integration test fixtures.","confidence":95,"addedAt":1769251524437}
{"contentHash":"a2c496560f8e1943","patternId":"basic-auth-header","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: This is a Base64-encoded Basic Auth header used in integration test code. The value 'ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpK' appears to be testing an invalid/truncated client secret scenario (note it's shorter than the valid one). This is part of test code validating error handling for incorrect credentials.","confidence":95,"addedAt":1769251524435}
{"contentHash":"8f616bdb9eb4a000","patternId":"basic-auth-header","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: This is a Base64-encoded Basic Auth header with an intentionally invalid/truncated client secret (ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpK - note the truncation). This is used in TestOAuthIntrospection to test error handling for invalid credentials. It's clearly test data for negative test cases.","confidence":95,"addedAt":1769251524438}
{"contentHash":"1a615dab7b2eba46","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\signin_test.go","reason":"Manually marked as false positive","addedAt":1769251532140}
{"contentHash":"d3334f387fe3185d","patternId":"password-assignment","filePath":"..\\gitcaddy\\tests\\integration\\signin_test.go","reason":"AI: This is a test file with a test case using 'password' as a generic literal string to test authentication failure. It's part of a test suite verifying that wrong username/password combinations are handled correctly. The value is an obvious placeholder.","confidence":95,"addedAt":1769251532139}
{"contentHash":"64aa848ddf5ae0d4","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\contrib\\gitea-monitoring-mixin\\jsonnetfile.lock.json","reason":"AI: This is a Git commit SHA hash (40 character hexadecimal string) used in a jsonnet lock file to pin a specific version of the grafonnet-lib dependency. It's not a GitHub OAuth token - it's a public commit reference that identifies a specific point in the repository history. The pattern matcher incorrectly flagged this as a token due to the hexadecimal format, but commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769274505523}
{"contentHash":"1d23be6121c73cf7","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\contrib\\upgrade.sh","reason":"AI: This is a GPG public key fingerprint (7C9E68152594688862D62AF62D9AE806EC1592E2) used to verify Gitea release signatures. GPG public key fingerprints are meant to be public and are not secrets. This specific fingerprint belongs to the Gitea maintainers' signing key and is intentionally shared publicly for verification purposes. The context shows it's being used with 'gpg --keyserver keys.openpgp.org --recv' to import a public key for signature verification.","confidence":95,"addedAt":1769252347465}
{"contentHash":"0cda87c795684386","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\flake.lock","reason":"AI: This is a Git commit hash (SHA-1) in a Nix flake.lock file, not a GitHub OAuth token. The 'rev' field contains a 40-character hexadecimal Git commit reference (0b4defa2584313f3b781240b29d61f6f9f7e0df3) which is a standard format for Git commits. This is a public reference to a specific commit in the nixos/nixpkgs repository and is not a secret credential. Flake.lock files are used by Nix to pin dependency versions and always contain commit hashes.","confidence":95,"addedAt":1769274510164}
{"contentHash":"9c2990cb2a543c1b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\asymkey\\gpg_key_test.go","reason":"AI: This is a Git tree hash in a test GPG signature payload, not a GitHub OAuth token. The value '56ae8d2799882b20381fc11659db06c16c68c61a' is a SHA-1 hash used in Git's internal object storage. The context shows this is part of a test commit object ('tree 56ae8d2799882b20381fc11659db06c16c68c61a\\nparent c7870c39e4e6b247235ca005797703ec4254613f') used for testing GPG signature extraction.","confidence":95,"addedAt":1769274540717}
{"contentHash":"6819b298fef327be","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\asymkey\\gpg_key_test.go","reason":"AI: This is a Git parent commit hash in a test GPG signature payload, not a GitHub OAuth token. The value 'c7870c39e4e6b247235ca005797703ec4254613f' is a SHA-1 hash representing a parent commit in Git. This appears in test data for validating GPG signature verification functionality.","confidence":95,"addedAt":1769274540719}
{"contentHash":"46331f8fe3e09b0e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\asymkey\\gpg_key_test.go","reason":"AI: This is a Git tree hash in a test GPG signature payload, not a GitHub OAuth token. The value '3074ff04951956a974e8b02d57733b0766f7cf6c' is a SHA-1 hash used in Git's internal object storage. The context shows this is part of a test commit object ('tree 3074ff04951956a974e8b02d57733b0766f7cf6c\\nparent fd3577542f7ad1554c7c7c0eb86bb57a1324ad91') used for testing bad GPG signatures.","confidence":95,"addedAt":1769274540722}
{"contentHash":"3252b74e35188143","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\asymkey\\gpg_key_test.go","reason":"AI: This is a Git parent commit hash in a test GPG signature payload, not a GitHub OAuth token. The value 'fd3577542f7ad1554c7c7c0eb86bb57a1324ad91' is a SHA-1 hash representing a parent commit in Git. This appears in test data for validating GPG signature verification with an unknown key.","confidence":95,"addedAt":1769274540724}
{"contentHash":"576b295f2bba2f35","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\models\\asymkey\\ssh_key_test.go","reason":"AI: This is a test SSH private key in a test file (ssh_key_test.go). The key is used for unit testing SSH signature functionality. The comment indicates it was 'Generated with ssh-keygen -C test@rekor.dev -f id_rsa' specifically for testing purposes. The email 'test@rekor.dev' is a clear test identifier, and the key is stored in a variable 'sshPrivateKey' that is used throughout the test suite.","confidence":95,"addedAt":1769252373468}
{"contentHash":"991a32d17ad4d54e","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\models\\asymkey\\ssh_key_test.go","reason":"AI: This is another test SSH private key in the same test file. The comment indicates it was 'Generated with ssh-keygen -C other-test@rekor.dev -f id_rsa' for testing purposes. The email 'other-test@rekor.dev' is clearly a test identifier, and the variable name 'otherSSHPrivateKey' indicates it's used for testing scenarios where multiple keys are needed (e.g., testing validation against wrong keys).","confidence":95,"addedAt":1769252373470}
{"contentHash":"821c93239efe4f55","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\models\\asymkey\\ssh_key_test.go","reason":"AI: This is a test Ed25519 SSH private key in the same test file. The comment indicates it was 'Generated with ssh-keygen -C test@rekor.dev -t ed25519 -f id_ed25519' for testing purposes. The email 'test@rekor.dev' matches the first test key, and the variable name 'ed25519PrivateKey' indicates it's used for testing Ed25519 key type functionality alongside RSA keys in the test suite.","confidence":95,"addedAt":1769252373472}
{"contentHash":"41b16568b3da7edd","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\access_token.yml","reason":"AI: This is a test fixture file (access_token.yml in fixtures directory) containing mock data for testing. The token is commented out and corresponds to a hashed version stored in token_hash. The file includes a comment at the end stating 'commented out tokens so you can see what they are in plaintext', indicating these are intentionally exposed test values. The presence of token_salt and token_hash suggests this is test data for validating token hashing functionality.","confidence":95,"addedAt":1769274578791}
{"contentHash":"f547ad5f862f8769","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\access_token.yml","reason":"AI: This is a test fixture file (access_token.yml in fixtures directory) containing mock data for testing. The token is commented out and corresponds to a hashed version stored in token_hash. The file includes a comment at the end stating 'commented out tokens so you can see what they are in plaintext', indicating these are intentionally exposed test values. The presence of token_salt and token_hash suggests this is test data for validating token hashing functionality.","confidence":95,"addedAt":1769274578794}
{"contentHash":"de31439e85a255f4","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\access_token.yml","reason":"AI: This is a test fixture file (access_token.yml in fixtures directory) containing mock data for testing. The token is commented out and corresponds to a hashed version stored in token_hash. The file includes a comment at the end stating 'commented out tokens so you can see what they are in plaintext', indicating these are intentionally exposed test values. The presence of token_salt and token_hash suggests this is test data for validating token hashing functionality.","confidence":95,"addedAt":1769274578797}
{"contentHash":"70fa7ea9621c42ee","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\action_task.yml","reason":"AI: This is a commit SHA (Git commit hash), not a GitHub OAuth token. The value 'c2d72f548424103f01ee1dc02889c1e2bff816b0' is a 40-character hexadecimal string which is the standard format for Git commit SHAs. This appears in a test fixture file with the field name 'commit_sha', clearly indicating it's a Git commit reference, not an authentication token.","confidence":95,"addedAt":1769274648419}
{"contentHash":"bebf47fe017de047","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\action_task.yml","reason":"AI: This is a commit SHA (Git commit hash), not a GitHub OAuth token. The value '6e64b26de7ba966d01d90ecfaf5c7f14ef203e86' is a 40-character hexadecimal string which is the standard format for Git commit SHAs. This appears in a test fixture file with the field name 'commit_sha', clearly indicating it's a Git commit reference, not an authentication token.","confidence":95,"addedAt":1769274648418}
{"contentHash":"e1bf2a526edbf4cc","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner_token.yml","reason":"AI: This is a test fixture file (models/fixtures/action_runner_token.yml) containing mock data for testing purposes. The token 'xeiWBL5kuTYxGPynHCqQdoeYmJAeG3IzGXCYTrDX' is a fixture token used for action runner testing, not an actual AWS secret. The file structure with multiple entries, IDs, and test scenarios (instance scope, user scope, active/inactive states) clearly indicates this is test data.","confidence":95,"addedAt":1769252423312}
{"contentHash":"fc084708b0ff9b1b","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner_token.yml","reason":"AI: This is a test fixture file containing mock data. The token 'vohJB9QcZuSv1gAXESTk2uqpSjHhsKT9j4zYF84x' is a fixture token for testing action runner functionality. The comment 'user scope and can't be used' and is_active: 0 flag further confirm this is test data designed to test different scenarios, not a real AWS secret.","confidence":95,"addedAt":1769252423316}
{"contentHash":"96df5fd91a8856e0","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner_token.yml","reason":"AI: This is a test fixture file with mock data. The token 'gjItAeJ3CA74hNPmPPo0Zco8I1eMaNcP1jVifjOE' is a fixture token for testing. The comment 'user scope and can be used' indicates this is part of a test suite to verify different permission scenarios. The systematic structure with sequential IDs and timestamps confirms this is test data, not a real AWS secret.","confidence":95,"addedAt":1769252423318}
{"contentHash":"03ca8ada5cee9cfb","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner_token.yml","reason":"AI: This is a test fixture file containing mock data. The token 'NOjLubxzFxPGhPXflZknys0gjVvQNhomFbAYuhbH' is a fixture token for testing action runner functionality. The comment 'repo scope' and the systematic structure with sequential IDs (1-4) and timestamps clearly indicate this is test data designed to test different scope scenarios, not a real AWS secret.","confidence":95,"addedAt":1769252423319}
{"contentHash":"4fb93d35084cb386","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_test.go","reason":"AI: This is the same Git commit ID '65f1bf27bc3bf70f64657658635e66094edbcb4d' as line 485, used in another test assertion for URL generation. Git commit hashes are public repository metadata, not secrets.","confidence":95,"addedAt":1769276807958}
{"contentHash":"f0e7e421778ccd6b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_trees_test.go","reason":"AI: This is the same Git commit/tree SHA hash (62fb502a7172d4453f0322a2cc85bddffa57f07a) as line 41, used again in a pagination test. It's a Git object identifier, not an authentication token. The context clearly shows it's testing API pagination functionality.","confidence":95,"addedAt":1769276643986}
{"contentHash":"4c72f9c17a85daa8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_commits_test.go","reason":"AI: This is a Git commit SHA hash (985f0301dba5e7b34be866819cd15ad3d8f508ee) used in integration tests, not a GitHub OAuth token. It appears in an assertion checking a commit URL path. Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769276795946}
{"contentHash":"8b6dc2e9aa49cb9d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\branch.yml","reason":"AI: This is a Git commit SHA-1 hash (40 hex characters) in a test fixture file, not a GitHub OAuth token. Part of the branch fixture test data.","confidence":95,"addedAt":1769274683862}
{"contentHash":"05c89c87afbe4fd3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user5\\repo4.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user5/repo4.git/refs/heads/master' clearly indicates this is a Git reference file that stores the commit hash for the master branch. Git commit SHAs are 40-character hexadecimal strings (SHA-1), which matches this pattern. This is test repository metadata, not a secret.","confidence":95,"addedAt":1769276453291}
{"contentHash":"83d95358b2e063d8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_commits_test.go","reason":"AI: This is a Git commit SHA hash (69554a64c1e6030f051e5c3f94bfbd773cd6a324) used in integration tests, not a GitHub OAuth token. It appears in a URL path assertion for a commit reference in test code. Git commit SHAs are public identifiers.","confidence":95,"addedAt":1769276795941}
{"contentHash":"5240b625ba030a5b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_commits_test.go","reason":"AI: This is a Git commit SHA hash (5099b81332712fe655e34e8dd63574f503f61811) used in integration tests, not a GitHub OAuth token. The value appears in an assertion checking commit IDs in a test repository. Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769276795936}
{"contentHash":"13f4666bf3bd7ff6","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_commits_test.go","reason":"AI: This is a Git commit SHA hash (f27c2b2b03dcab38beaf89b0ab4ff61f6de63441) used in test assertions for file history API testing. It's test fixture data.","confidence":95,"addedAt":1769276628297}
{"contentHash":"3c65540756308a60","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_test.go","reason":"AI: This is the same Git commit ID 'aacbdfe9e1c4b47f60abe81849045fa4e96f1d75' as line 502, used in another test assertion. Git commit hashes are public repository identifiers and do not represent authentication credentials or secrets.","confidence":95,"addedAt":1769276807961}
{"contentHash":"d44aaf74353049fa","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_test.go","reason":"AI: This is the same Git commit ID '2a47ca4b614a9f5a43abbd5ad851a54a616ffee6' as line 116, used in another test assertion. Git commit hashes are public repository identifiers and not authentication tokens or secrets.","confidence":95,"addedAt":1769276807954}
{"contentHash":"e8afafbb3ef5b976","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\org3\\repo5.git\\refs\\heads\\test_branch","reason":"AI: This is a Git commit SHA hash (40-character hexadecimal string) located in a Git refs file (.git/refs/heads/test_branch). Git refs files store commit hashes that branches point to, not OAuth tokens. While the pattern matches the format of a GitHub OAuth token, the context clearly indicates this is a Git object reference. The file path 'tests/gitea-repositories-meta/org3/repo5.git/refs/heads/test_branch' confirms this is test repository metadata.","confidence":95,"addedAt":1769275975208}
{"contentHash":"53656ab59f867a64","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Same Git commit SHA hash (73cf03db6ece34e12bf91e8853dc58f678f2f82d) as line 327, repeated in test code.","confidence":95,"addedAt":1769276779022}
{"contentHash":"61e7e706de1bb537","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo1.git\\refs\\heads\\DefaultBranch","reason":"AI: This is a Git commit SHA hash (40 character hexadecimal string) located in a Git refs/heads file, which is the standard format for Git references. The file path 'tests/gitea-repositories-meta/user2/repo1.git/refs/heads/DefaultBranch' clearly indicates this is a test repository structure. Git commit SHAs are public identifiers, not secrets. While the pattern matches the format of a GitHub OAuth token (40 hex characters), the context definitively identifies this as a Git reference.","confidence":95,"addedAt":1769276250050}
{"contentHash":"121ca6feaf350e95","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git commit SHA hash (4649299398e4d39a5c09eb4f534df6f1e1eb87cc) used in test code for LastCommitID in directory deletion test. Public repository identifier.","confidence":95,"addedAt":1769276779032}
{"contentHash":"619e6e366c421fb9","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\commit_status.yml","reason":"AI: This is a test fixture file with the same 'context_hash' value ('c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7') repeated from line 10, confirming it's a deterministic hash value for the context 'ci/awesomeness'. This is test/mock data, not a real GitHub OAuth token.","confidence":95,"addedAt":1769274694029}
{"contentHash":"fca27b1d7fc48ee5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\commit_status.yml","reason":"AI: This is a test fixture file with the same 'context_hash' value ('3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe') repeated from line 22, confirming it's a deterministic hash value for the same context 'cov/awesomeness'. This is clearly test data, not a real GitHub OAuth token.","confidence":95,"addedAt":1769274694025}
{"contentHash":"7c980ae42d417628","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\commit_status.yml","reason":"AI: This is a test fixture file containing mock data. The value 'ae9547713a6665fc4261d0756904932085a41cf2' is labeled as 'context_hash' for the context 'deploy/awesomeness'. Like the other entries, this is a deterministic hash value used in test fixtures, not a GitHub OAuth token.","confidence":95,"addedAt":1769274694031}
{"contentHash":"c12fc15973ff0325","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\pull_commit_test.go","reason":"AI: This is a Git commit SHA hash (4a357436d925b5c974181ff12a994538ddc5a269) used in integration test code to verify the last review commit SHA. Git commit SHAs are not secrets - they are public identifiers in version control systems. The value is being used in an assertion to validate test data.","confidence":95,"addedAt":1769276739413}
{"contentHash":"f98adb6fface65ba","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_pull_test.go","reason":"AI: This is a Git commit SHA hash (1a8823cd1a9549fde083f992f6b9b87a7ab74fb3) used in a test file to verify API functionality for retrieving pull request information by commit. The variable name 'mergedCommitSHA' clearly indicates this is a commit hash, not a GitHub OAuth token. Git commit SHAs are 40-character hexadecimal strings that are public identifiers in version control systems.","confidence":95,"addedAt":1769276533684}
{"contentHash":"67d29ad7da776efa","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\commitsonpr.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user2/commitsonpr.git/refs/heads/master' indicates this is a Git reference file that stores the commit hash for the master branch. Git commit SHAs are 40-character hexadecimal strings (SHA-1), which matches this pattern. This is test repository metadata, not a secret.","confidence":95,"addedAt":1769276118749}
{"contentHash":"7ba004453d49ef66","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo-release.git\\refs\\tags\\v1.0","reason":"AI: This is a Git object hash (SHA-1) stored in a Git refs/tags file, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user2/repo-release.git/refs/tags/v1.0' clearly indicates this is a Git reference file that stores the commit hash for tag v1.0. Git SHA-1 hashes are 40-character hexadecimal strings, which matches this pattern. This is test repository data, not a secret.","confidence":95,"addedAt":1769276225110}
{"contentHash":"e8a58dcbd092f28d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo-release.git\\refs\\tags\\v1.1","reason":"AI: This is a Git object SHA-1 hash (40 hexadecimal characters) located in a Git repository refs/tags directory, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user2/repo-release.git/refs/tags/v1.1' indicates this is a Git tag reference file that stores the commit hash for tag v1.1. Git SHA-1 hashes are public identifiers, not secrets. The pattern was incorrectly flagged as a GitHub OAuth token due to similar character length and hexadecimal format.","confidence":95,"addedAt":1769276229448}
{"contentHash":"6764b5b064c32c52","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo-release.git\\refs\\tags\\v2.0","reason":"AI: This is a Git object SHA-1 hash (40 hexadecimal characters) stored in a Git refs/tags file, which is part of the standard Git repository structure. The file path 'tests\\gitea-repositories-meta\\user2\\repo-release.git\\refs\\tags\\v2.0' indicates this is a test repository, and the content is a Git commit/tag reference hash, not a GitHub OAuth token. Git SHA-1 hashes follow the same format as some tokens but serve a completely different purpose in version control systems.","confidence":95,"addedAt":1769276234332}
{"contentHash":"4aa48c1eed47a60a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo2.git\\packed-refs","reason":"AI: This is a Git SHA-1 commit hash in a packed-refs file, not a GitHub OAuth token. The file is located in a test repository's .git directory (tests/gitea-repositories-meta/user2/repo2.git/packed-refs). Git packed-refs files store references to commits using SHA-1 hashes (40 hexadecimal characters), which have a similar format to some tokens but serve a completely different purpose. The value '205ac761f3326a7ebe416e8673760016450b5cec' is a legitimate Git object reference, not an authentication credential.","confidence":95,"addedAt":1769276339751}
{"contentHash":"915b22ccece04aaa","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\fixtures\\review.yml","reason":"AI: This is a Git commit SHA hash (8091a55037cd59e47293aca02981b5a67076b364) in a test fixture file, not a GitHub OAuth token. The file is located in 'models/fixtures/review.yml' which is clearly test data. Git commit SHAs are 40-character hexadecimal strings that are public identifiers, not secrets. The context shows this is the 'commit_id' field in a review fixture.","confidence":95,"addedAt":1769274736392}
{"contentHash":"f0df9deb633ee41f","patternId":"postgres-uri","filePath":"..\\gitcaddy\\tests\\integration\\migration-test\\migration_test.go","reason":"AI: This is a PostgreSQL connection string template in test code that uses placeholder variables (setting.Database.User, setting.Database.Passwd, setting.Database.SSLMode, setting.Database.Host). The values are dynamically constructed from configuration settings, not hardcoded credentials. This is part of migration test infrastructure that restores old database versions for testing purposes.","confidence":95,"addedAt":1769254510609}
{"contentHash":"2ff9386dc0a0cef1","patternId":"postgres-uri","filePath":"..\\gitcaddy\\tests\\test_utils.go","reason":"AI: This is another PostgreSQL connection string template in test utility code that uses configuration variables (setting.Database.User, setting.Database.Passwd, etc.) rather than hardcoded credentials. The pattern detected is just the format string 'postgres://%s:%s@/%s?sslmode=%s&host=%s' which is a connection URI template, not an actual secret. The actual values are loaded from test configuration at runtime. This is the same pattern as line 102, used in a different conditional branch.","confidence":95,"addedAt":1769254613106}
{"contentHash":"85a551eb5c52ab21","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\migrations\\fixtures\\Test_RepositoryFormat\\review_state.yml","reason":"AI: This is a Git commit SHA hash in a test fixture file (located in models/migrations/fixtures/Test_RepositoryFormat/). The value '19fe5caf872476db265596eaac1dc35ad1c6422d' is a 40-character hexadecimal string which is the standard format for Git commit hashes, not a GitHub OAuth token. The field name 'commit_sha' clearly indicates this is a commit hash. This is test/mock data for database migrations.","confidence":95,"addedAt":1769274781909}
{"contentHash":"a4163358850908d7","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_test.go","reason":"AI: This is part of an import path 'code.gitcaddy.com/server/v3/modules/packages/container' in a Go source file. The detected pattern 'com/********************iner' is matching across the import path structure, not an actual AWS secret key. This is a false positive triggered by pattern matching on a URL/package path.","confidence":95,"addedAt":1769254357744}
{"contentHash":"d60c5d1d5d35929a","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\install\\install.go","reason":"AI: This is a Go import path 'code.gitcaddy.com/server/v3/modules/auth/password/hash' - not an AWS secret key. The pattern matcher incorrectly flagged this as a secret because it contains 'hash' at the end and has a structure that superficially resembles a secret key format. However, this is clearly a module import statement in Go code, which is a standard programming construct for importing packages.","confidence":95,"addedAt":1769253334420}
{"contentHash":"32d60fd8fcf8b46b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\language_stats_repo\\refs\\heads\\master","reason":"AI: This is a Git reference file located in a test repository (.git/refs/heads/master). The value '8fee858da5796dfb37704761701bb8e800ad9ef3' is a Git commit SHA-1 hash (40 hexadecimal characters), not a GitHub OAuth token. Git commit hashes are public identifiers used to reference specific commits in version control and are not secrets. The file path 'modules/git/tests/repos/language_stats_repo/refs/heads/master' clearly indicates this is test data within a mock Git repository structure.","confidence":95,"addedAt":1769275069082}
{"contentHash":"f9027c7f8865bb73","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_blob_test.go","reason":"AI: This is a Git object ID (SHA-1 hash) used in a test file for the Git repository module. The value '6c493ff740f9380390d5c9ddef4af18697ac9375' is a 40-character hexadecimal string that represents a blob object in a test repository, not a GitHub OAuth token. Git object IDs are public identifiers within repositories and are not secrets. The context shows this is testing the GetBlob functionality with known test data that corresponds to 'file2'.","confidence":95,"addedAt":1769274940790}
{"contentHash":"78fde4a035305814","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_compare_test.go","reason":"AI: This is a Git commit SHA-1 hash (8d92fc957a4d7cfd98bc375f0b7bb189a0d6c9f2) used in test case data for testing file change detection. This is the same commit hash used throughout the test file. Git commit hashes are public version control identifiers.","confidence":99,"addedAt":1769275002550}
{"contentHash":"70606cec6eff46b0","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_compare_test.go","reason":"AI: This is a Git commit SHA-1 hash (95bb4d39648ee7e325106df01a621c530863a653) used as the 'base' commit in a test case for comparing file changes. Same hash as line 146. Git commit hashes are public repository identifiers.","confidence":99,"addedAt":1769275002546}
{"contentHash":"91b556aa4409fa66","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\refs\\heads\\branch1","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo1_bare/refs/heads/branch1' clearly indicates this is part of a Git repository structure where refs/heads/ contains branch references that point to commit SHAs. Git commit hashes are 40-character hexadecimal strings, which can superficially match patterns for tokens, but they are not secrets - they are public identifiers for commits in version control.","confidence":99,"addedAt":1769275095602}
{"contentHash":"193f5d4dd779a724","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\commit_info_test.go","reason":"AI: This is a Git commit SHA-1 hash (9c9aef8dd84e02bc7ec12641deb4c930a7c30185) used in test cases, not a GitHub OAuth token.","confidence":95,"addedAt":1769274863640}
{"contentHash":"66c12304b740cbb2","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\refs\\heads\\branch2","reason":"AI: This is a Git commit SHA-1 hash, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo1_bare/refs/heads/branch2' clearly indicates this is a Git reference file in a bare repository test fixture. Git stores branch references as 40-character hexadecimal SHA-1 hashes in files under refs/heads/. The value '5c80b0245c1c6f8343fa418ec374b13b5d4ee658' is a standard Git commit hash format (40 hex characters), which coincidentally matches the pattern length of some tokens but serves a completely different purpose.","confidence":99,"addedAt":1769275100123}
{"contentHash":"72c13e6c329c6e78","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\logs\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (ce064814f4a0d337b333e646ece456cd39fab612) in a Git reflog file, not a GitHub OAuth token. The context clearly shows this is test data in a bare Git repository's reflog. Git SHAs are public version control identifiers, not authentication credentials.","confidence":95,"addedAt":1769275086444}
{"contentHash":"290572652a0e8c88","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tree_entry_common_test.go","reason":"AI: This is a Git commit SHA hash (37991dec2c8e592043f47155ce4808d4580f9123) used in a test file to reference a specific commit in a test repository. Git commit SHAs are public identifiers, not secrets. The context shows it's being used with r.GetCommit() to retrieve a commit object for testing purposes.","confidence":95,"addedAt":1769275239873}
{"contentHash":"0045f64b61219d5c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_blob_test.go","reason":"AI: This is a Git object ID (SHA-1 hash) used in a test file for the Git repository module. The value 'e2129701f1a4d54dc44f03c93bca0a2aec7c5449' is a 40-character hexadecimal string that represents a blob object in a test repository, not a GitHub OAuth token. Git object IDs are public identifiers within repositories and are not secrets. The context shows this is testing the GetBlob functionality with known test data.","confidence":95,"addedAt":1769274940787}
{"contentHash":"c8ca67126aec4108","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\modules\\git\\commit_sha256_test.go","reason":"AI: This is the same PGP signature block appearing again in the test assertions (assert.Equal statement). The pattern is part of the expected PGP signature output being validated in the test. It's test data verifying that commit signature parsing works correctly, not an actual AWS secret key.","confidence":95,"addedAt":1769252678826}
{"contentHash":"82e6e3095c495bd1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\commit_test.go","reason":"AI: This is a Git commit SHA hash (8006ff9adbf0cb94da7dad9e537e53817f9fa5c0) used in a test file, not a GitHub OAuth token. Git commit SHAs are 40-character hexadecimal strings that are publicly visible in repositories and are not secrets. The context shows this is being used to test the CommitsCount function with a specific revision.","confidence":95,"addedAt":1769275275116}
{"contentHash":"d13d50aeb42f4ea1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\commit_test.go","reason":"AI: This is a Git tree object SHA hash (f1a6cb52b2d16773290cefe49ad0684b50a4f930) in an assertion statement verifying commit parsing. Git tree hashes are public identifiers, not secrets.","confidence":95,"addedAt":1769274880716}
{"contentHash":"15823bc837230050","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\commit_test.go","reason":"AI: This is a Git tree object SHA hash (ca3fad42080dd1a6d291b75acdfc46e5b9b307e5) in an assertion verifying commit parsing with encoding. Git tree hashes are public identifiers, not secrets.","confidence":95,"addedAt":1769274880729}
{"contentHash":"33eb564418ceb64f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\commit_test.go","reason":"AI: This is a Git commit SHA hash (47b24e7ab977ed31c5a39989d570847d6d0052af) in an assertion statement. Git commit hashes are public repository identifiers, not secrets.","confidence":95,"addedAt":1769274880732}
{"contentHash":"ed66511d63589d85","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\error.go","reason":"AI: This is a Git commit SHA hash appearing in a comment that explains the format of stderr output from a Git push rejection. The value '44e67c77559211d21b630b902cdcc6ab9d4a4f51' is a 40-character hexadecimal Git commit hash, not a GitHub OAuth token. It's part of example output showing what a rejected push looks like, specifically in the line '! [remote rejected] 44e67c77559211d21b630b902cdcc6ab9d4a4f51 -> develop (pre-receive hook declined)'. This is documentation/example code explaining error message parsing.","confidence":95,"addedAt":1769274886277}
{"contentHash":"cb968d338c679fcb","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\foreachref\\parser.go","reason":"AI: This is the same Git commit SHA hash used as an example in another code comment demonstrating the format of a reference block string. The value 'f460b7543ed500e49c133c2cd85c8c55ee9dbe27' is a Git object hash used for illustrative purposes in the parseRef function documentation, not a GitHub OAuth token. The context clearly shows it's part of a sample git command output.","confidence":95,"addedAt":1769274892399}
{"contentHash":"1323f94649402716","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\foreachref\\parser_test.go","reason":"AI: This is a Git object hash (SHA-1) used in test data for a parser test. The value '7b2c5ac9fc04fc5efafb60700713d4fa609b777b' is a 40-character hexadecimal string representing a Git commit object, not a GitHub OAuth token. This is the same test value as line 77, appearing in the expected results section of the test.","confidence":95,"addedAt":1769274902123}
{"contentHash":"0a61fcdbcd8be938","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\foreachref\\parser_test.go","reason":"AI: This is a Git object hash (SHA-1) used in test data for a parser test. The value 'a1f051bc3eba734da4772d60e2d677f47cf93ef4' is a 40-character hexadecimal string representing a Git commit object, not a GitHub OAuth token. This is the same test value as line 78, appearing in the expected results section of the test.","confidence":95,"addedAt":1769274902125}
{"contentHash":"ae28c342ad0f0242","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\foreachref\\parser_test.go","reason":"AI: This is a Git object hash (SHA-1) used in test data for a parser test. The value 'ef82de70bb3f60c65fb8eebacbb2d122ef517385' is a 40-character hexadecimal string representing a Git commit object, not a GitHub OAuth token. This is the same test value as line 79, appearing in the expected results section of the test.","confidence":95,"addedAt":1769274902128}
{"contentHash":"ea0892795d09fa84","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo3_notes\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo3_notes/refs/heads/master' indicates this is a Git reference file that stores the commit hash for the master branch in a test repository. Git reference files in the .git/refs/heads/ directory contain 40-character hexadecimal commit SHAs, which match the pattern of some secret detection rules but are not secrets themselves.","confidence":95,"addedAt":1769275138440}
{"contentHash":"5a26dd42a9bfec70","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo3_notes\\logs\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (3e668dbfac39cbc80a9ff9c61eb565d944453ba4) found in a Git reflog file. This represents the new commit hash in the Git history. The file is located in a test repository ('tests/repos/repo3_notes'), and these 40-character hex strings are standard Git commit identifiers, not GitHub OAuth tokens.","confidence":95,"addedAt":1769275134173}
{"contentHash":"b0b5f99c8bbca858","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\object_id_test.go","reason":"AI: This is a test file (object_id_test.go) testing Git SHA hash computation. The value 'e69de29bb2d1d6434b8b29ae775ad8c2e48c5391' is the well-known Git SHA-1 hash for an empty blob object, which is a deterministic hash value used in Git internals testing. This is not a GitHub OAuth token but a Git object hash being validated in a unit test.","confidence":95,"addedAt":1769274919509}
{"contentHash":"9159fa16c9b2c6df","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\object_id_test.go","reason":"AI: This is a test file testing Git SHA hash computation. The value '2e65efe2a145dda7ee51d1741299f848e5bf752e' is the deterministic Git SHA-1 hash for a blob containing the single character 'a'. This is a standard Git hash value used for testing hash computation functions, not a GitHub OAuth token. The context shows it's comparing expected hash outputs from ComputeBlobHash function.","confidence":95,"addedAt":1769274919512}
{"contentHash":"45266f29f44538de","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\parse_treeentry_test.go","reason":"AI: This is a Git blob SHA-1 hash (ea0d83c9081af9500ac9f804101b3fd0a5c293af) used in test input for invalid format testing. Git object hashes are not secrets - they are publicly visible identifiers.","confidence":99,"addedAt":1769274934809}
{"contentHash":"0218a26ee0b184e1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\parse_treeentry_test.go","reason":"AI: This is a Git blob SHA-1 hash (037f27dc9d353ae4fd50f0474b2194c593914e35) used in test expectations. It's the same hash as line 19, used to verify parsing logic. Git object hashes are not secrets.","confidence":99,"addedAt":1769274934791}
{"contentHash":"2d38d86086b271db","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\parse_treeentry_test.go","reason":"AI: This is a Git blob SHA-1 hash (9846a94f7e8350a916632929d0fda38c90dd2ca8) used in test expectations. It's the same hash as line 20, used to verify parsing logic. Git object hashes are not secrets.","confidence":99,"addedAt":1769274934793}
{"contentHash":"863f9b46ed8476df","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\parse_treeentry_test.go","reason":"AI: This is a Git tree SHA-1 hash (84b90550547016f73c5dd3f50dea662389e67b6d) used in test expectations for the short format test. Git object hashes are not secrets.","confidence":99,"addedAt":1769274934807}
{"contentHash":"347ec2250ed0ed18","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo5_pulls\\packed-refs","reason":"AI: This is the same Git SHA-1 commit hash (c83380d7056593c51a699d12b9c00627bd5743e9) appearing again in the packed-refs file for a different ref (refs/pull/1/head). This is normal Git behavior where the same commit can be referenced by multiple refs. It's a Git object hash, not a GitHub OAuth token.","confidence":99,"addedAt":1769275191726}
{"contentHash":"0787d895bfc8ccd0","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\gitdiff_test.go","reason":"AI: This is a Git commit SHA hash (d8e0bbb45f200e67d9a784ce55bd90821af45ebd) used in a test file for diff comparison, not a GitHub OAuth token. The pattern detector incorrectly flagged it due to the hexadecimal format, but commit SHAs are 40 characters long and are public identifiers in Git repositories, not secrets.","confidence":95,"addedAt":1769275563011}
{"contentHash":"e00baf775a33ce9a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo5_pulls\\refs\\pull\\4\\head","reason":"AI: This is a Git reference file located in a test repository under 'modules/git/tests/repos/repo5_pulls/refs/pull/4/head'. The value '58a4bcc53ac13e7ff76127e0fb518b5262bf09af' is a Git commit SHA-1 hash (40 hexadecimal characters), not a GitHub OAuth token. Git refs files store commit hashes to track branch and pull request heads. The file path structure 'refs/pull/4/head' is the standard Git format for storing pull request references.","confidence":95,"addedAt":1769275210333}
{"contentHash":"4b8be99a69ac5b49","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\commit_test.go","reason":"AI: This is a Git commit SHA hash (ce064814f4a0d337b333e646ece456cd39fab612) referenced in a comment within a test file, not a GitHub OAuth token. The comment explicitly states this is 'the time of commit ce064814f4a0d337b333e646ece456cd39fab612 (refs/heads/master)', confirming it's a Git commit reference. Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769275275118}
{"contentHash":"30943ab8087dbede","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_branch_test.go","reason":"AI: This is a Git SHA-1 blob hash (153f451b9ee7fa1da317ab17a127e9fd9d384310) used in test code to verify blob hash references. Same hash as line 135, confirming it's a test fixture value, not a secret.","confidence":95,"addedAt":1769274959461}
{"contentHash":"86f256e08c9242ae","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_commit_test.go","reason":"AI: This is a Git commit SHA-1 hash (28b55526e7100924d864dd89e35c1ea62e7a5a32) used in test code for the repo1_bare test repository. Git commit hashes are public identifiers, not secrets. The pattern was incorrectly flagged as a GitHub OAuth token.","confidence":95,"addedAt":1769274990452}
{"contentHash":"bf4083e0d8974d47","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo4_commitsbetween\\logs\\refs\\heads\\main","reason":"AI: This is a Git commit SHA hash (a78e5638b66ccfe7e1b4689d3d5684e42c97d7ca) in a Git reflog file, not a GitHub OAuth token. This is test data in a test repository, and Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769275168470}
{"contentHash":"0c071730757c69d5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo4_commitsbetween\\logs\\refs\\heads\\main","reason":"AI: This is a Git commit SHA hash (fdc1b615bdcff0f0658b216df0c9209e5ecb7c78) in a Git reflog file, not a GitHub OAuth token. This is test data in a test repository, and Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769275168467}
{"contentHash":"8a9ba0fb86d78af7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo4_commitsbetween\\refs\\heads\\main","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo4_commitsbetween/refs/heads/main' indicates this is a Git reference file that stores the commit hash for the 'main' branch. Git ref files contain 40-character hexadecimal SHA-1 hashes that point to commits. While the format (40 hex characters) can superficially resemble some token formats, the context clearly shows this is test repository data for Git operations, specifically a commit reference.","confidence":95,"addedAt":1769275173342}
{"contentHash":"f552ee55b3093dfe","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\refs\\tags\\test","reason":"AI: This is a Git commit SHA-1 hash located in a Git repository's refs/tags directory, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo1_bare/refs/tags/test' clearly indicates this is part of a Git repository structure where tag references store commit hashes. Git SHA-1 hashes are 40-character hexadecimal strings that match the pattern detected, but they are not secrets - they are public identifiers for commits.","confidence":95,"addedAt":1769275118787}
{"contentHash":"107a54d4744e511a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\pulls\\2.patch","reason":"AI: This is a Git commit hash from a patch file, not a GitHub OAuth token. The value '6e8e2a6f9efd71dbe6917816343ed8415ad696c3' appears in the 'From' line of a Git patch file format, which is a standard Git commit SHA-1 hash. Git commit hashes are 40-character hexadecimal strings that are publicly visible in repositories and are not secrets. The file is located in a test directory (modules/git/tests/repos/repo1_bare/pulls/2.patch), further confirming this is test data.","confidence":95,"addedAt":1769275091175}
{"contentHash":"913f63626088b650","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\refs\\tags\\signed-tag","reason":"AI: This is a Git object SHA-1 hash (40 hexadecimal characters) located in a Git repository's refs/tags directory, not a GitHub OAuth token. The file path 'modules/git/tests/repos/repo1_bare/refs/tags/signed-tag' clearly indicates this is part of Git's internal structure for storing tag references. Git uses SHA-1 hashes to identify commits, trees, and other objects. GitHub OAuth tokens have a different format and would not be stored in Git's internal reference files.","confidence":95,"addedAt":1769275114468}
{"contentHash":"eb4780d844125b59","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_tag_test.go","reason":"AI: This is a Git commit SHA hash (6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1) used in test code for GetAnnotatedTag testing. Git commit hashes are public identifiers in repositories.","confidence":95,"addedAt":1769275037115}
{"contentHash":"624f2ed9a0d8b513","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_tag_test.go","reason":"AI: This is a Git commit SHA hash (ab23e4b7f4cd0caafe0174c0e7ef6d651ba72889) used in test expectations for verifying Tag.Object field. Same hash reused in test assertions.","confidence":95,"addedAt":1769275037124}
{"contentHash":"3fabab5a05325bc9","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_tag_test.go","reason":"AI: This is a Git commit SHA hash (3325fd8a973321fd59455492976c042dde3fd1ca) used in the Signature.Payload field as part of test data for PGP-signed Git tags. Git object identifier in test fixture.","confidence":95,"addedAt":1769275037142}
{"contentHash":"23d356b1c0dc4825","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\repo_tag_test.go","reason":"AI: This is a Git commit SHA hash (8c68a1f06fc59c655b7e3905b159d761e91c53c9) used in test expectations for verifying Tag.ID in signed tag test case. Test data.","confidence":95,"addedAt":1769275037138}
{"contentHash":"772007de62545792","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\submodule_test.go","reason":"AI: This is a test file (submodule_test.go) containing a Git submodule commit hash, not a GitHub OAuth token. The value 'd2932de67963f23d43e1c7ecf20173e92ee6c43c' is a 40-character SHA-1 Git commit hash used in test assertions for submodule functionality. Git commit hashes are public identifiers, not secrets. The pattern matcher incorrectly flagged this as a GitHub OAuth token due to similar character patterns.","confidence":95,"addedAt":1769275042118}
{"contentHash":"a1dc99830e2ff63e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tag_test.go","reason":"AI: This is the same Git object SHA-1 hash (3b114ab800c6432ad42387ccf6bc8d4388a2885a) referenced in the expected test result structure. Git SHA-1 hashes are public identifiers, not secrets. This is part of a unit test validating tag parsing functionality.","confidence":99,"addedAt":1769275055944}
{"contentHash":"eb54a7fd634f8e1f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tag_test.go","reason":"AI: This is the same Git object SHA-1 hash (7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc) in the expected test result. Git SHA-1 hashes are not secrets - they are cryptographic hashes of Git objects that serve as public identifiers. This is part of unit test validation.","confidence":99,"addedAt":1769275055951}
{"contentHash":"bdf60ac28845ad8e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tag_test.go","reason":"AI: This is the same Git object SHA-1 hash (7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa) appearing in the Payload field of the test's expected signature structure. Git SHA-1 hashes are public identifiers used to reference Git objects and are not secrets. This is clearly part of unit test validation.","confidence":99,"addedAt":1769275055958}
{"contentHash":"da83322a5b6f7e59","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo1_bare\\refs\\notes\\commits","reason":"AI: This is a Git commit SHA-1 hash located in a Git repository's refs/notes/commits file, which is a standard Git internal reference file. The file path 'modules/git/tests/repos/repo1_bare/refs/notes/commits' clearly indicates this is test repository data. Git commit hashes are 40-character hexadecimal strings that match the pattern of various secret detectors, but they are not secrets - they are public identifiers for commits. The value 'ca6b5ddf303169a72d2a2971acde4f6eea194e5c' is a legitimate Git object reference, not a GitHub OAuth token.","confidence":95,"addedAt":1769275109673}
{"contentHash":"1711d401d5d5b367","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo3_notes\\refs\\notes\\commits","reason":"AI: This is a Git reference hash located in a test repository under 'modules/git/tests/repos/repo3_notes/refs/notes/commits'. The file path indicates this is test data for Git notes functionality. The value '654c8b6b63c08bf37f638d3f521626b7fbbd4d37' is a 40-character SHA-1 hash used by Git to reference commits, not a GitHub OAuth token. Git commit hashes and GitHub OAuth tokens may have similar formats (hexadecimal strings), but this is clearly a Git object reference in a notes ref file, which is a standard Git internal structure.","confidence":95,"addedAt":1769275145000}
{"contentHash":"b85846be9dcd846f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo4_submodules\\refs\\heads\\master","reason":"AI: This is a Git reference file located in .git/refs/heads/master that contains a Git commit SHA-1 hash (40 hexadecimal characters). Git commit hashes are not secrets - they are public identifiers for commits in version control. The file path 'modules/git/tests/repos/repo4_submodules/refs/heads/master' clearly indicates this is test repository data. The pattern was incorrectly flagged as a GitHub OAuth token, but GitHub tokens have different formats and are not 40-character hex strings stored in Git ref files.","confidence":95,"addedAt":1769275178255}
{"contentHash":"2bc6c835a073578f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo5_pulls\\objects\\info\\packs","reason":"AI: This is a Git pack file reference in a standard Git repository structure. The string 'pack-81423f591973f5d9dab89cc45afa1c544448133e.pack' is a Git pack filename where the hex string is a SHA-1 hash identifying the pack file, not a GitHub OAuth token. The file is located in 'objects/info/packs' which is a standard Git internal directory. The 'P' prefix indicates this is a pack file entry in Git's internal format. This is test repository data as evidenced by the path 'modules/git/tests/repos/repo5_pulls'.","confidence":99,"addedAt":1769275182854}
{"contentHash":"8569da82fc986c82","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo5_pulls\\packed-refs","reason":"AI: This is a Git SHA-1 commit hash (111cac04bd7d20301964e27a93698aabb5781b80) in a packed-refs file for refs/pull/1/merge. This is a standard Git commit reference, not a GitHub OAuth token. The context clearly shows this is part of a Git repository's internal reference storage.","confidence":99,"addedAt":1769275191728}
{"contentHash":"d42fc6342b434b48","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a Git commit SHA hash (72866af952e98d02a73003501836074b286a78f6) used in test code for the Base branch SHA in a PullRequest test structure. Not an OAuth token.","confidence":95,"addedAt":1769275686125}
{"contentHash":"4bd0d103ab8cd62f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\blame_test.go","reason":"AI: This is a Git commit SHA hash (544d8f7a3b15927cddf2299b4b562d6ebd71b6a7) used in test code, same as line 96. It's a public Git commit identifier, not a GitHub OAuth token.","confidence":95,"addedAt":1769275264554}
{"contentHash":"a3d35a9b8d851d34","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\commit_file_test.go","reason":"AI: This is a Git commit SHA hash (022f4ce6214973e018f02bf363bf8a2e3691f699) used in a test file, not a GitHub OAuth token. The pattern detector incorrectly flagged it as a GitHub OAuth token. Git commit SHAs are 40-character hexadecimal strings that are public identifiers for commits in version control systems and are not secrets. This is clearly test code (TestGetCommitFileStatusMerges function) referencing a specific commit in a mock repository.","confidence":95,"addedAt":1769275268897}
{"contentHash":"805b74b66a6d6797","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo6_merge\\refs\\heads\\merge\\add_file","reason":"AI: This is a Git commit SHA hash (40 hexadecimal characters) located in a Git repository reference file (.git/refs/heads/merge/add_file). The file path and format are consistent with Git's internal structure for storing commit references. Git commit SHAs are not secrets - they are public identifiers used to reference specific commits in version control. The pattern was incorrectly flagged as a GitHub OAuth token, but the context clearly indicates this is a Git object reference.","confidence":95,"addedAt":1769275224124}
{"contentHash":"ede2441f72384ca0","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo6_merge\\refs\\heads\\merge\\modify_file","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file is located in a test repository path (modules/git/tests/repos/repo6_merge/refs/heads/merge/modify_file) which is part of Git's internal structure. The 'refs/heads' directory stores commit references in Git repositories. Git commit SHAs are 40-character hexadecimal strings that happen to match the pattern of some API tokens, but they are not secrets - they are public identifiers for commits.","confidence":95,"addedAt":1769275228879}
{"contentHash":"0a477fa443b88e08","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tests\\repos\\repo6_merge\\refs\\heads\\merge\\remove_file","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) located in a Git repository reference file (.git/refs/heads/merge/remove_file). The file path and format are consistent with Git's internal structure for storing branch references. Git commit hashes are public identifiers, not secrets. The pattern was incorrectly flagged as a GitHub OAuth token, but GitHub tokens have different formats and lengths.","confidence":95,"addedAt":1769275233367}
{"contentHash":"26a8dad0cbb56b99","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\tree_entry_common_test.go","reason":"AI: This is a Git object ID/SHA hash (b14df6442ea5a1b382985a6549b85d435376c351) used in a test assertion to verify the correct target entry is resolved when following a symlink. Git object IDs are public identifiers that reference blobs, trees, or commits in a Git repository, not authentication secrets. The context shows it's being compared with res.TargetEntry.ID.String() in a test.","confidence":95,"addedAt":1769275239876}
{"contentHash":"69ce9d45aaf6ba92","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\blame_test.go","reason":"AI: This is a Git commit SHA hash (45fb6cbc12f970b04eacd5cd4165edd11c8d7376) used in test code, same as lines 78 and 113. It's a public Git commit identifier, not a GitHub OAuth token.","confidence":95,"addedAt":1769275264558}
{"contentHash":"237a0d985580acc4","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\git\\utils_test.go","reason":"AI: This is a SHA-1 hash value used in a test case for the HashFilePathForWebUI function. The value '8843d7f92416211de9ebb963ff4ce28125932878' is the expected SHA-1 hash output for the input string 'foobar', which is a well-known test value. This is test code verifying hash computation, not a GitHub OAuth token.","confidence":99,"addedAt":1769275250296}
{"contentHash":"5791d70116070482","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\onedev_test.go","reason":"AI: This is a Git commit SHA hash (f32b0a9dfd09a60f616f29158f772cedd89942d2) used in test code to reference a specific commit in a pull request base branch. Git commit SHAs are public identifiers visible in repository history, not authentication secrets. The value appears in a test file testing migration functionality, where it represents the base branch commit of a pull request.","confidence":95,"addedAt":1769275698989}
{"contentHash":"dc63101fc6826d98","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\blame_test.go","reason":"AI: This is a Git commit SHA hash (af7486bd54cfc39eea97207ca666aa69c9d6df93) used in test code, same as previous occurrences. It's a public Git commit identifier, not an OAuth token.","confidence":95,"addedAt":1769275264552}
{"contentHash":"54dfa889d68e3a77","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\gitrepo\\diff.go","reason":"AI: This is a Git commit SHA hash used as an example in a code comment demonstrating the output format of 'git diff --shortstat'. The value '1ebb35b98889ff77299f24d82da426b434b0cca0...788b8b1440462d477f45b0088875' is a Git commit reference, not a GitHub OAuth token. Git commit SHAs are 40-character hexadecimal strings that are public identifiers in version control systems and are not secrets. The comment is explaining what the git command output looks like.","confidence":95,"addedAt":1769275280726}
{"contentHash":"7f311659938e2c9c","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\modules\\markup\\markdown\\markdown.go","reason":"AI: This is a Go import statement importing the 'chromahtml' package from GitHub (github.com/alecthomas/chroma/v2/formatters/html). The pattern matched 'com/********************html' which is part of the import path, not an AWS secret key. Import paths in Go follow the format 'domain.com/path/to/package' and this is clearly a legitimate package import for syntax highlighting functionality.","confidence":99,"addedAt":1769253137452}
{"contentHash":"086e8c2333bfb511","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\modules\\indexer\\code\\indexer_test.go","reason":"AI: This is a false positive. The detected pattern 'com/********************leve' is actually part of an import path 'code.gitcaddy.com/server/v3/modules/indexer/code/bleve' in a Go source file. This is a standard Go package import statement, not an AWS secret access key. The pattern matcher incorrectly identified the substring as a secret due to pattern matching on the text, but it's clearly part of a URL/package path structure.","confidence":99,"addedAt":1769253099144}
{"contentHash":"6c6bd82c92435070","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\references\\references.go","reason":"AI: This is part of a regex pattern comment demonstrating the format for cross-reference commit patterns. The string 'd8a994ef243349f321568f9e36d5c3f444b99cae' is a 40-character hexadecimal string used as an example of a Git commit SHA in the comment explaining the regex pattern. It appears in a comment line that reads '// e.g. go-gitea/gitea@d8a994ef, go-gitea/gitea@d8a994ef243349f321568f9e36d5c3f444b99cae (7-40 characters)'. This is clearly documentation showing the expected format for matching commit references, not an actual secret.","confidence":95,"addedAt":1769275411842}
{"contentHash":"3d55bfadf3b08e7a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\markup\\html_internal_test.go","reason":"AI: Same jQuery commit SHA used in test case validation. Public commit identifier.","confidence":100,"addedAt":1769275334913}
{"contentHash":"c4e211e2fe675e52","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\markup\\html_internal_test.go","reason":"AI: Same jQuery commit SHA used in test case validation. Public commit identifier.","confidence":100,"addedAt":1769275334922}
{"contentHash":"545b0badd1203cc6","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\markup\\html_test.go","reason":"AI: This is a duplicate detection of the same BitTorrent info hash on line 174. The pattern appears twice in the same line because the hash appears in both the href attribute and the link text of the rendered HTML. This is test fixture data for validating markup rendering, not a GitHub OAuth token.","confidence":99,"addedAt":1769275346798}
{"contentHash":"bc08fdc88ff9de6a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\templates\\util_render_test.go","reason":"AI: This is a Git commit SHA hash (12fc37a3c0a4dda553bdcfc80c178a58247f42fb) in expected test output for MarkdownToHtml test. Git commit SHAs are public identifiers, not secrets. This is part of the expected HTML output in a test assertion.","confidence":99,"addedAt":1769275486494}
{"contentHash":"3472ed74bcad9b4c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\templates\\util_render_test.go","reason":"AI: This is a Git commit SHA hash (88fc37a3c0a4dda553bdcfc80c178a58247f42fb) in expected test output for MarkdownToHtml test. Git commit SHAs are public identifiers, not secrets. This is part of the expected HTML output in a test assertion.","confidence":99,"addedAt":1769275486499}
{"contentHash":"0388a2a62c3061b8","patternId":"redis-uri","filePath":"..\\gitcaddy\\modules\\nosql\\manager_redis_test.go","reason":"AI: This is another test connection URI 'redis://redis:password@myredis/12' in the TestRedisDatabaseIndexTcp function. It uses the same generic placeholder credentials ('redis:password') and fake hostname ('myredis') as the other tests. This is clearly test code verifying database index parsing functionality, not containing real credentials.","confidence":95,"addedAt":1769253161295}
{"contentHash":"f0b66987c70222d9","patternId":"redis-uri","filePath":"..\\gitcaddy\\modules\\nosql\\redis.go","reason":"AI: This is a documentation comment explaining the Redis URI connection string format. The detected pattern 'redis://[username:password@]host[:port][/database][?[option=value]*]' is a template/schema showing the structure of Redis URIs with placeholder syntax (brackets indicating optional components). This is not an actual credential but rather documentation of the expected format.","confidence":99,"addedAt":1769253165075}
{"contentHash":"d3143999597ff181","patternId":"redis-uri","filePath":"..\\gitcaddy\\modules\\nosql\\redis_test.go","reason":"AI: This is a test file (redis_test.go) containing test cases for Redis URI conversion. The connection string 'network=tcp,addr=127.0.0.1:6379,password=macaron,db=0,pool_size=100,idle_timeout=180' uses 'macaron' as a password, which is clearly a placeholder/example value named after the Macaron web framework. The test is validating URI conversion logic, not containing real credentials. The localhost address (127.0.0.1) and generic password further confirm this is test data.","confidence":95,"addedAt":1769253169157}
{"contentHash":"147855a5aec1e12a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\alpine\\metadata_test.go","reason":"AI: This is a test file assertion checking that the CommitHash field equals '1111e709613fbc979651b09ac2bc27c6591a9999'. This is the same mock Git commit hash value used in the test fixture above. It's clearly test data with an obvious fake pattern (repeating 1111 and 9999), and represents a Git commit hash in Alpine package metadata, not a GitHub OAuth token.","confidence":95,"addedAt":1769275377950}
{"contentHash":"168601827c50b370","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_maven_test.go","reason":"AI: This is the same SHA-1 hash value ('a94a8fe5ccb19ba61c4c0873d391e987982fbbd3') appearing again in the test file, used for checksum verification. It's testing the download checksum functionality for Maven packages. This is a well-known SHA-1 hash of the string 'test', not a secret token.","confidence":99,"addedAt":1769276508810}
{"contentHash":"005bcfc452209697","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\hashed_buffer_test.go","reason":"AI: This is a SHA1 hash value used in a test case to verify hash computation functionality. The file is a test file that tests hashing of the string 'testtest'. The value '51abb9636078defbf888d8457a7c76f85c8f114c' is the SHA1 hash of the word 'testtest', not a GitHub OAuth token. It appears in a test case structure alongside corresponding MD5, SHA256, and SHA512 hashes for validation purposes.","confidence":95,"addedAt":1769275389426}
{"contentHash":"dd8042551421f03b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\multi_hasher_test.go","reason":"AI: This is a SHA1 hash constant used in a test file for validating hash computation. The value '060b3b99f88e96085b4a68e095bc9e3d1d91e1bc' is the expected SHA1 hash of the string 'gitea' and is used to verify the MultiHasher implementation works correctly. It's not a GitHub OAuth token, but rather a cryptographic hash that happens to match the pattern of a hex-encoded string.","confidence":99,"addedAt":1769275393907}
{"contentHash":"4c321f391f304576","patternId":"azure-storage-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_npm_test.go","reason":"AI: This is an assertion in a test file verifying that the integrity hash 'sha512-yA4FJsVhetynGfOC1jFf79BuS+jrHbm0fhh+aHzCQkOaOBXKf9oBnC4a6DnLLnEsHQDRLYd00cwj8sCXpC+wIg==' matches the expected value. This is the same test data from line 65 being validated. It's a mock SHA-512 integrity hash for NPM package testing, not an Azure storage key.","confidence":95,"addedAt":1769254340236}
{"contentHash":"2e95a4380ff80a7a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_pull_test.go","reason":"AI: This is an obviously fake/placeholder commit SHA (abcd1234abcd1234abcd1234abcd1234abcd1234) used in a test to verify error handling when an invalid commit is requested. The variable name 'invalidCommitSHA' explicitly states this is invalid, and the pattern 'abcd1234' repeated is a clear indicator of test data. This is used to test the 404 Not Found response path.","confidence":98,"addedAt":1769276533688}
{"contentHash":"deb87fabd17715bb","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\commits_test.go","reason":"AI: This is the same test constant 'hexString1' with value '0123456789abcdef0123456789abcdef01234567' used in another test function. It's a mock Git commit SHA-1 hash with an obvious sequential pattern (0123456789abcdef repeated), used for testing Git commit functionality, not a real GitHub OAuth token.","confidence":99,"addedAt":1769275426404}
{"contentHash":"bafec2d5bcb2f60f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\commits_test.go","reason":"AI: This is a test constant 'hexString2' with value 'fedcba9876543210fedcba9876543210fedcba98', which is a 40-character hexadecimal string used as a mock Git commit SHA-1 hash. It follows a reverse sequential pattern (fedcba9876543210 repeated), clearly indicating it's a placeholder value for testing purposes, not a real GitHub OAuth token.","confidence":99,"addedAt":1769275426407}
{"contentHash":"439f4119c30858f3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\repo_test.go","reason":"AI: This is a Git commit SHA-1 hash (1006e6e13c73ad3d9e2d5682ad266b5016523485) used in test code for database release mock data. Git commit hashes are public identifiers, not secrets. This is the same hash from line 27, reused in the dbReleases fixture.","confidence":95,"addedAt":1769275436852}
{"contentHash":"5f35723df6a416f7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\repo_test.go","reason":"AI: This is a Git commit SHA-1 hash (bbdb7df30248e7d4a26a909c8d2598a152e13868) used in test code for repository tag testing. Git commit hashes are public identifiers, not secrets. The context shows this is mock data for testing tag retagging scenarios.","confidence":95,"addedAt":1769275436845}
{"contentHash":"ac01cd80f19bce95","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\repo_test.go","reason":"AI: This is a Git commit SHA-1 hash (a5147145e2f24d89fd6d2a87826384cc1d253267) used in test code for repository tag testing. Git commit hashes are public identifiers, not secrets. The context shows this is mock data for testing new tag creation.","confidence":95,"addedAt":1769275436847}
{"contentHash":"f70030efaf3b1458","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\repo_test.go","reason":"AI: This is a Git commit SHA-1 hash (244758d7da8dd1d9e0727e8cb7704ed4ba9a17c3) used in test code for database release mock data. Git commit hashes are public identifiers, not secrets. This is the same hash reused in another test fixture entry.","confidence":95,"addedAt":1769275436850}
{"contentHash":"7dfc62608f587b18","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\repository\\repo_test.go","reason":"AI: This is a Git commit SHA-1 hash (53ab18dcecf4152b58328d1f47429510eb414d50) used in test code for database release mock data. Git commit hashes are public identifiers, not secrets. This appears in the dbReleases test fixture for testing update scenarios.","confidence":95,"addedAt":1769275436854}
{"contentHash":"0ccead5ab37eb478","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\modules\\secretscan\\patterns.go","reason":"AI: This is a regex pattern definition in a secret scanning tool. The string '-----BEGIN OPENSSH PRIVATE KEY-----' is part of a regexp.MustCompile() call that defines what pattern to search for, not an actual private key. This is code that detects secrets, not a secret itself.","confidence":95,"addedAt":1769253238535}
{"contentHash":"7077754e95ca80dc","patternId":"private-key-ec","filePath":"..\\gitcaddy\\modules\\secretscan\\patterns.go","reason":"AI: This is a regex pattern definition in a secret scanning tool. The string '-----BEGIN EC PRIVATE KEY-----' is part of a regexp.MustCompile() call that defines what pattern to search for, not an actual private key. This is code that detects secrets, not a secret itself.","confidence":95,"addedAt":1769253238540}
{"contentHash":"b6634a8e9f9e0584","patternId":"private-key-dsa","filePath":"..\\gitcaddy\\modules\\secretscan\\patterns.go","reason":"AI: This is a regex pattern definition in a secret scanning tool. The string '-----BEGIN DSA PRIVATE KEY-----' is part of a regexp.MustCompile() call that defines what pattern to search for, not an actual private key. This is code that detects secrets, not a secret itself.","confidence":95,"addedAt":1769253238543}
{"contentHash":"301b002c6b859f18","patternId":"private-key-pgp","filePath":"..\\gitcaddy\\modules\\secretscan\\patterns.go","reason":"AI: This is a regex pattern definition in a secret scanning tool. The string '-----BEGIN PGP PRIVATE KEY BLOCK-----' is part of a regexp.MustCompile() call that defines what pattern to search for, not an actual private key. This is code that detects secrets, not a secret itself.","confidence":95,"addedAt":1769253238545}
{"contentHash":"be323abe3d4c0876","patternId":"mysql-uri","filePath":"..\\gitcaddy\\modules\\secretscan\\patterns.go","reason":"AI: This is a regex pattern definition in a secret scanning tool. The string 'mysql://[^:]+:[^@]+@[^/]+/[^\\s\"']+' is a regular expression pattern used to detect MySQL connection strings, not an actual connection string with credentials. This is code that detects secrets, not a secret itself.","confidence":95,"addedAt":1769253238547}
{"contentHash":"daababcd561a37f0","patternId":"postgres-uri","filePath":"..\\gitcaddy\\modules\\setting\\database_test.go","reason":"AI: This is a test file (database_test.go) containing unit tests for PostgreSQL connection string parsing. The detected pattern is part of a test case with obviously fake credentials ('pgsqlusername', 'I love Gitea!') used to verify URL encoding functionality. The values are hardcoded test data, not real database credentials.","confidence":95,"addedAt":1769253244113}
{"contentHash":"6749aa972e61de86","patternId":"postgres-uri","filePath":"..\\gitcaddy\\modules\\setting\\database_test.go","reason":"AI: This is a test file (database_test.go) containing unit tests for PostgreSQL connection string generation. The detected pattern is part of a test case with simple placeholder credentials ('user', 'pass') used to verify connection string formatting with query parameters. These are clearly mock values for testing purposes, not real database credentials.","confidence":95,"addedAt":1769253244116}
{"contentHash":"0011cc25eb432071","patternId":"azure-storage-key","filePath":"..\\gitcaddy\\tests\\mssql.ini.tmpl","reason":"AI: This is the well-known Azure Storage Emulator (Azurite) default account key 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='. This is a publicly documented default key used with the Azure storage emulator for local development. The endpoint 'devstoreaccount1.azurite.local:10000' and account name 'devstoreaccount1' confirm this is the standard Azurite emulator configuration, not a real Azure storage account.","confidence":98,"addedAt":1769254589146}
{"contentHash":"1b96ffa0d5c86a69","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\options\\gitignore\\Flutter","reason":"AI: This is a false positive detection in a Flutter .gitignore file. The detected pattern '/mac********************rant' is actually part of the gitignore entry '**/macos/Flutter/GeneratedPluginRegistrant.swift' which specifies a file path pattern to ignore. The asterisks are gitignore wildcards for path matching, not part of an AWS secret key. This is a standard Flutter project configuration file with no actual secrets.","confidence":99,"addedAt":1769253275105}
{"contentHash":"1b34137a01ef16bd","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\options\\gitignore\\Prestashop","reason":"AI: This is a false positive. The detected pattern 'dev/********************ggle' is actually part of a gitignore file path pattern '/admin-dev/autoupgrade/*'. The asterisks are gitignore wildcard characters used for pattern matching, not part of an AWS secret key. This is a standard gitignore syntax for ignoring all files in the /admin-dev/autoupgrade/ directory.","confidence":95,"addedAt":1769253278823}
{"contentHash":"e675c8bb27e8c5e2","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\options\\gitignore\\WordPress","reason":"AI: This is a false positive detection. The matched text 'com/********************ress' is part of a URL comment '# https://github.com/github/gitignore/blob/main/WordPress.gitignore' in a WordPress .gitignore file. The pattern matcher incorrectly identified part of the URL path containing 'github.com' and 'WordPress' as an AWS Secret Access Key. This is clearly a GitHub URL reference, not a secret key.","confidence":99,"addedAt":1769253283110}
{"contentHash":"dd4e9c1f41746379","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\actions\\actions.go","reason":"AI: This is a false positive. The detected pattern 'com/********************nner' is part of a Go import path 'code.gitcaddy.com/server/v3/routers/api/actions/runner'. This is a standard Go package import statement, not an AWS Secret Access Key. The pattern matcher incorrectly identified this as a secret due to the 'com/' prefix and 'nner' suffix matching some pattern, but it's clearly just a URL path component in an import statement.","confidence":99,"addedAt":1769253287209}
{"contentHash":"11e34898eccc7e0c","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_cargo_test.go","reason":"AI: This is a false positive. The detected pattern 'com/********************argo' is actually part of an import path 'code.gitcaddy.com/server/v3/tests' followed by another import for cargo_router. The secret detection tool incorrectly matched across multiple lines of Go import statements. This is clearly test code (in tests/integration directory) with standard Go package imports, not an AWS secret key.","confidence":99,"addedAt":1769254297883}
{"contentHash":"455dc9bec93745c6","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_conan_test.go","reason":"AI: This is a false positive detection. The matched string 'com/********************onan' is part of an import path 'code.gitcaddy.com/server/v3/models/packages/conan' in a Go source file. This is a module import statement, not an AWS secret key. The pattern matcher incorrectly identified the substring 'com/' followed by 'onan' (from 'conan') as matching an AWS secret key pattern, but it's clearly just a URL path component in a package import.","confidence":99,"addedAt":1769254315829}
{"contentHash":"0ee22c9629c9ff08","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\packages\\api.go","reason":"AI: This is a Go import path 'code.gitcaddy.com/server/v3/routers/api/packages/conda', not an AWS secret key. The pattern matcher incorrectly flagged this as a secret because it contains 'com/' followed by characters, but it's actually part of a standard Go package import statement.","confidence":100,"addedAt":1769253295806}
{"contentHash":"b5e7f797570db81b","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\packages\\api.go","reason":"AI: This is a Go import path 'code.gitcaddy.com/server/v3/routers/api/packages/maven', not an AWS secret key. The pattern matcher incorrectly flagged this as a secret because it contains 'com/' followed by characters, but it's actually part of a standard Go package import statement.","confidence":100,"addedAt":1769253295808}
{"contentHash":"8da8c2e0d423acdc","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_nuget_test.go","reason":"AI: This is a false positive. The detected pattern 'com/********************uget' is part of an import path 'code.gitcaddy.com/server/v3/routers/api/packages/nuget' in a Go source file. This is a module import statement, not an API key. The asterisks in the detection are masking normal characters in the URL path structure. This is test code for NuGet package integration testing, and the pattern match is incorrectly identifying a URL path as a secret.","confidence":95,"addedAt":1769254345616}
{"contentHash":"298a700a63998ff1","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_swift_test.go","reason":"AI: This is a false positive. The detected pattern 'com/********************wift' is actually part of a Go import path 'code.gitcaddy.com/server/v3/modules/packages/swift' where 'swift' refers to the Swift programming language package module. This is test code for Swift package integration, and the pattern match is coincidental - it's matching across the import path structure, not an actual AWS secret key.","confidence":99,"addedAt":1769254350386}
{"contentHash":"9b6462f2a4d6842e","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\v1\\api.go","reason":"AI: This is part of an import path 'code.gitcaddy.com/server/v3/models/perm/access' where the detected pattern 'com/********************ypub' is actually a substring of the module path. The '/access' at the end and the context of being in an import statement makes it clear this is not an AWS secret key but rather part of a code repository URL structure.","confidence":95,"addedAt":1769253317432}
{"contentHash":"41cd047e64ffd8dd","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\v1\\misc\\markup_test.go","reason":"AI: This is a false positive. The detected pattern is part of a URL string in test code: 'http://localhost:3000/user2/repo1/src/branch/main/image.png'. The pattern matcher incorrectly identified '3000' followed by text ending in 'mage' as an AWS Secret Access Key, but it's actually just a localhost port number (3000) and the word 'image' from a test URL path. This is identical to lines 161 and 165 and appears in the same test function.","confidence":95,"addedAt":1769253324965}
{"contentHash":"605daf76557c3f8a","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\api\\v1\\org\\pinned.go","reason":"AI: This is a false positive. The detected pattern '/def********************tion' is part of a Swagger/OpenAPI schema reference '#/definitions/CreateOrgPinnedGroupOption' in the API documentation comment. The pattern matcher incorrectly identified 'definitions' as containing a secret pattern, but it's actually just part of the standard OpenAPI/Swagger documentation syntax for referencing schema definitions.","confidence":99,"addedAt":1769253329384}
{"contentHash":"20a18b2865c16c0e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\private\\hook_verification_test.go","reason":"AI: This is a Git commit SHA hash (72920278f2f999e3005801e5d5b8ab8139d3641c) used in test code for hook verification. This is the same commit SHA that appears on line 33. Git commit SHAs are publicly visible and not secrets.","confidence":95,"addedAt":1769275509383}
{"contentHash":"129196a28061e93c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\private\\tests\\repos\\repo1_hook_verification\\refs\\heads\\main","reason":"AI: This is a Git commit SHA hash, not a GitHub OAuth token. The file path 'refs/heads/main' indicates this is a Git reference file that stores the commit hash for the main branch. Git commit SHAs are 40-character hexadecimal strings that look similar to tokens but are public identifiers, not secrets. This appears to be part of a test repository structure ('tests/repos/repo1_hook_verification') which further confirms it's a legitimate Git reference.","confidence":95,"addedAt":1769275529982}
{"contentHash":"e4ab455a6d0bbd1b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\private\\hook_verification_test.go","reason":"AI: This is a Git commit SHA hash (93eac826f6188f34646cea81bf426aa5ba7d3bfe) used in test code for hook verification. The comment 'New branch with verified commit' confirms this is test data. Git commit SHAs are publicly visible and not secrets.","confidence":95,"addedAt":1769275509378}
{"contentHash":"e5906c61bd950384","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\private\\hook_verification_test.go","reason":"AI: This is a Git commit SHA hash (72920278f2f999e3005801e5d5b8ab8139d3641c) used in test code for hook verification. This is the same commit SHA that appears on line 33. Git commit SHAs are publicly visible and not secrets.","confidence":95,"addedAt":1769275509381}
{"contentHash":"f52c905ac1ca146a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\private\\hook_verification_test.go","reason":"AI: This is a Git commit SHA hash (9ce3f779ae33f31fce17fac3c512047b75d7498b) used in test code for hook verification. The comment 'New branch with unverified commit' confirms this is test data. Git commit SHAs are publicly visible and not secrets.","confidence":95,"addedAt":1769275509385}
{"contentHash":"b7dcf0ae770b3959","patternId":"postgres-uri","filePath":"..\\gitcaddy\\routers\\web\\admin\\admin_test.go","reason":"AI: This is a test case in a unit test file (admin_test.go) that tests the shadowPassword function. The connection string 'postgres://user:pass@hostname/dbname' uses generic placeholder values ('user', 'pass', 'hostname', 'dbname') that are clearly example values for testing password masking functionality. The test verifies that the password 'pass' gets replaced with '******' in the output.","confidence":95,"addedAt":1769253370753}
{"contentHash":"29ca483b2a4ad31a","patternId":"postgres-uri","filePath":"..\\gitcaddy\\routers\\web\\admin\\admin_test.go","reason":"AI: This is the expected result in a test case that demonstrates the shadowPassword function working correctly. The value 'postgres://user:******@hostname/dbname' shows the password already masked with asterisks, which is the expected output of the password masking function being tested. This is test data verifying proper secret redaction, not an actual secret.","confidence":95,"addedAt":1769253370757}
{"contentHash":"f1c0edd46f3a0ef3","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\web\\repo\\setting\\secrets.go","reason":"AI: This is a false positive. The detected pattern 'com/********************rets' is part of an import path 'code.gitcaddy.com/server/v3/routers/web/shared/secrets' which is a Go package import statement. The word 'secrets' at the end is part of the package name referring to secrets management functionality, not an actual secret value. This is standard Go code structure.","confidence":99,"addedAt":1769253374466}
{"contentHash":"8ad0ee559b698737","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\web\\repo\\treelist_test.go","reason":"AI: This is a test file (treelist_test.go) containing mock data. The value '4acf7eef1c943a09e9f754e93ff190db8583236b' appears to be a NameHash field used in test assertions for file tree transformation. It's a SHA-1 hash used as a test fixture, not a GitHub OAuth token. The context shows this is part of a WebDiffFileItem structure being tested.","confidence":95,"addedAt":1769275535296}
{"contentHash":"d34b96389b3b272e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\web\\repo\\treelist_test.go","reason":"AI: This is a test file (treelist_test.go) containing mock data. The value '60b27f004e454aca81b0480209cce5081ec52390' appears to be a NameHash field used in test assertions for file tree transformation. It's a SHA-1 hash used as a test fixture, not a GitHub OAuth token. The context shows this is part of a WebDiffFileItem structure being tested.","confidence":95,"addedAt":1769275535300}
{"contentHash":"06e1d1aed238d512","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\web\\web.go","reason":"AI: This is part of an import path 'code.gitcaddy.com/server/v3/routers/web/shared/actions' in a Go source file. The pattern matched 'com/********************ions' which is just a substring of the package import path, not an actual AWS secret key. Import paths are code structure declarations, not credentials.","confidence":95,"addedAt":1769253391301}
{"contentHash":"ac168532559c1760","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\routers\\web\\web.go","reason":"AI: This is part of an import path 'code.gitcaddy.com/server/v3/routers/web/shared/project' in a Go source file. The pattern matched 'com/********************ject' which is just a substring of the package import path, not an actual AWS secret key. Import paths are code structure declarations, not credentials.","confidence":95,"addedAt":1769253391304}
{"contentHash":"48b3863d1413e620","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\actions\\context.go","reason":"AI: This is an example SHA commit hash used in a code comment to illustrate the format of the 'sha' field in the GitHub Actions context. The comment explicitly states 'For example, ffac537e6cbbf934b08745a378932722df287a53.' This is documentation showing what a commit SHA looks like, not an actual secret token. The value is a 40-character hexadecimal string which is the standard format for Git commit SHAs, not a GitHub OAuth token.","confidence":95,"addedAt":1769275540411}
{"contentHash":"540fe0b888467ee8","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\services\\asymkey\\commit_test.go","reason":"AI: This is a test file (commit_test.go) and the OpenSSH private key is embedded in a comment block as test data. The comment explicitly shows it's for testing SSH signature parsing. The corresponding public key is added to a test database with user ID 999 (clearly a test user). This is test fixture data, not a real secret in use.","confidence":95,"addedAt":1769253405161}
{"contentHash":"6d40d0288548999f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\asymkey\\commit_test.go","reason":"AI: This is a Git tree SHA-1 hash (a3b1fad553e0f9a2b4a58327bebde36c7da75aa2) used in a test file for parsing SSH-signed commits. Git tree hashes are cryptographic hashes of repository content, not authentication tokens. The pattern was incorrectly flagged as a GitHub OAuth token due to similar hexadecimal format, but this is clearly test data within a commit object structure.","confidence":99,"addedAt":1769275546356}
{"contentHash":"c539478d1f8db687","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\asymkey\\commit_test.go","reason":"AI: This is a Git tree SHA-1 hash (9a93ffa76e8b72bdb6431910b3a506fa2b39f42e) used in a test file for parsing SSH-signed commits. Git tree hashes are cryptographic hashes of repository content, not authentication tokens. The pattern was incorrectly flagged as a GitHub OAuth token due to similar hexadecimal format, but this is clearly test data within a commit object structure for the TrustedSSHKey test case.","confidence":99,"addedAt":1769275546360}
{"contentHash":"79141b050620735f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\submodule_test.go","reason":"AI: Git commit SHA hash (68972a994719ae5c74e28d8fa82fa27c23399bc8) in expected test results for the 'converted to submodule' test case, validating the new commit reference extraction.","confidence":99,"addedAt":1769275636519}
{"contentHash":"53b92c908d9faa21","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\submodule_test.go","reason":"AI: Git commit SHA hash (c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d) in expected test results for the 'converted to file' test case.","confidence":99,"addedAt":1769275636514}
{"contentHash":"f6317238a3b9c8a1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\submodule_test.go","reason":"AI: Git commit SHA hash (8eefa1f6dedf2488db2c9e12c916e8e51f673160) in expected test results, representing the new commit reference after move and update.","confidence":99,"addedAt":1769275636509}
{"contentHash":"70ef637a97ad0f92","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\codebase_test.go","reason":"AI: This is a Git commit SHA hash (1287f206b888d4d13540e0a8e1c07458f5420059) used in test code to reference a specific commit in a pull request. It's part of a test assertion for the Head branch SHA in a PullRequest object. Git commit SHAs are public identifiers, not secrets, and this appears in a test file validating migration functionality.","confidence":95,"addedAt":1769275654017}
{"contentHash":"9d996a7b04fdc4e5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\migrate_test.go","reason":"AI: This is a Git commit SHA hash (827aa28a907853e5ddfa40c8f9bc52471a2685fd), not a GitHub OAuth token. The value appears in a test file that's verifying migration functionality from gitea.com, and it's being used to assert the MergedCommitID of a pull request. Git commit SHAs are public identifiers in repositories and are not secrets. The pattern detector incorrectly flagged this as a token due to the hexadecimal format, but the context clearly shows it's a commit hash being validated in an integration test.","confidence":95,"addedAt":1769276699616}
{"contentHash":"8cb7754a8da27420","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\gitea_downloader_test.go","reason":"AI: This is a Git commit SHA hash (b6ab5d9ae000b579a5fff03f92c486da4ddf48b6) used in test code for pull request head branch reference. Git SHAs are public identifiers, not secrets. The context shows this is part of a PullRequestBranch structure in a test file.","confidence":95,"addedAt":1769275667212}
{"contentHash":"9421fd77c8548310","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\gitea_downloader_test.go","reason":"AI: This is a Git commit SHA hash (187ece0cb6631e2858a6872e5733433bb3ca3b03) used as CommitID in yet another review test structure. Git SHAs are public identifiers, not secrets. This is the same SHA used throughout the test data for the review functionality tests.","confidence":95,"addedAt":1769275667224}
{"contentHash":"d2461b63569ea195","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a Git commit SHA hash (076160cf0b039f13e5eff19619932d181269414b) used in test data for Review.CommitID field. Not an OAuth token.","confidence":95,"addedAt":1769275686143}
{"contentHash":"e1e98a880fc90b81","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a Git commit SHA hash (2be9101c543658591222acbee3eb799edfc3853d) used in test data for ReviewComment.CommitID field. Not an OAuth token.","confidence":95,"addedAt":1769275686153}
{"contentHash":"8794f091a92f7d2c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\github_test.go","reason":"AI: This is a Git commit SHA hash (565d1208f5fffdc1c5ae1a2436491eb9a5e4ebae) used as MergeCommitSHA in test data. Not an OAuth token.","confidence":95,"addedAt":1769275686135}
{"contentHash":"1d15b7b7455f70b9","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\gitlab_test.go","reason":"AI: This is a Git commit SHA hash (0720a3ec57c1f843568298117b874319e7deee75) used as a TargetCommitish in test code for GitLab migration testing. It's part of test data representing a release's target commit, not an authentication token. The pattern was misidentified as a GitHub OAuth token due to the hexadecimal format, but commit SHAs are 40 characters long and publicly visible in repositories.","confidence":95,"addedAt":1769275693422}
{"contentHash":"f9af1062c783c8b8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\gitlab_test.go","reason":"AI: This is a Git commit SHA hash (9f733b96b98a4175276edf6a2e1231489c3bdd23) used in test code to represent the HEAD SHA of a pull request branch. It's part of test data for GitLab migration testing, not an authentication token. The pattern was misidentified as a GitHub OAuth token due to the hexadecimal format, but commit SHAs are 40 characters long and are publicly visible metadata in Git repositories.","confidence":95,"addedAt":1769275693425}
{"contentHash":"5ff4844aff5e64f2","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\migrations\\onedev_test.go","reason":"AI: This is a Git commit SHA hash (343deffe3526b9bc84e873743ff7f6e6d8b827c0) used in test code to reference a specific commit in a pull request branch. Git commit SHAs are public identifiers, not secrets. The value appears in a test file (onedev_test.go) testing migration functionality from OneDev, where it represents the HEAD commit of a pull request branch.","confidence":95,"addedAt":1769275698984}
{"contentHash":"426bb830cbb6c2e3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\mirror\\mirror_pull_test.go","reason":"AI: This is a Git commit SHA hash (7f894307ffc9553edbd0b671cab829786866f7b2) used in a test case error message to simulate a race condition where a ref has an expected commit value. This is part of test data for error handling scenarios, not a GitHub OAuth token.","confidence":95,"addedAt":1769275705394}
{"contentHash":"68c71c03ed3f3ca7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\mirror\\mirror_pull_test.go","reason":"AI: This is a Git commit SHA hash (7f894307ffc9553edbd0b671cab829786866f7b2) used in a test case error message to simulate a race condition where a ref has an expected commit value. This is part of test data for error handling scenarios, not a GitHub OAuth token.","confidence":95,"addedAt":1769275705398}
{"contentHash":"004878340e83e2d8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\repository\\files\\diff_test.go","reason":"AI: This is a test file (diff_test.go) and the value '8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d' is assigned to 'NameHash' field in a test data structure. This appears to be a Git hash (40 hex characters) used for testing diff functionality, not a GitHub OAuth token. The context shows it's part of expectedDiff test data for validating diff output, and Git hashes are commonly used in repository testing.","confidence":95,"addedAt":1769275746413}
{"contentHash":"6cbc9654c71d136d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git blob SHA hash (4b4851ad51df6a7d9f25c979345979eaeb5b349f) used in test code, same as line 51. Public Git object identifier for file content.","confidence":95,"addedAt":1769276779030}
{"contentHash":"72a3fb399b150ae3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\repository\\gitgraph\\graph_test.go","reason":"AI: This is the same Git commit SHA hash (4e61bacab44e9b4730e44a6615d04098dd3a8eaf) appearing again in test data within the 'TestCommitStringParsing' function. The value is part of a test string 'dataFirstPart' used to validate commit message parsing. This is clearly mock/test data representing a Git commit identifier, not a GitHub OAuth token. The pattern matches a Git SHA-1 hash format which is a public version control identifier.","confidence":95,"addedAt":1769275767959}
{"contentHash":"3ae2493ada432760","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\webhook\\telegram_test.go","reason":"AI: This is a Git commit SHA hash (2020558fe2e34debb818a514715839cabd25e778) used in test code, not a GitHub OAuth token. The value appears in a URL path for a commit reference in a webhook test payload. Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769275855175}
{"contentHash":"e89a0bcdf2728006","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\webhook\\general_test.go","reason":"AI: This is mock test data in a webhook test file. The value '2020558fe2e34debb818a514715839cabd25e777' is used as the 'Before' commit SHA in a push payload test. It represents the previous commit state in a Git push operation, which is public information, not a secret token.","confidence":95,"addedAt":1769275827661}
{"contentHash":"f9c3dce648efacd8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\webhook\\matrix_test.go","reason":"AI: This is a SHA1 hash (0a4d55a8d778e5022fab701977c5d840bbc486d0) that is the expected output of hashing 'Hello World' in a unit test. It's the expected result in a test case for the getMatrixTxnID function, not a secret token.","confidence":100,"addedAt":1769275839693}
{"contentHash":"7faf445065087b5d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\limited_org\\private_repo_on_limited_org.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40 character hexadecimal string) stored in a Git refs file, not a GitHub OAuth token. The file path 'refs/heads/master' indicates this is a Git reference file that stores the commit hash that the master branch points to. Git commit SHAs are public identifiers, not secrets. While the pattern matches the format of a GitHub OAuth token, the context clearly shows this is a Git internal file.","confidence":95,"addedAt":1769275859583}
{"contentHash":"b4890e9b04cfb98a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\limited_org\\public_repo_on_limited_org.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) stored in a Git reference file under .git/refs/heads/master. The file path 'tests\\gitea-repositories-meta\\limited_org\\public_repo_on_limited_org.git\\refs\\heads\\master' clearly indicates this is part of a test repository structure. Git commit hashes are public identifiers, not secrets. The pattern was incorrectly flagged as a GitHub OAuth token due to similar character length and hexadecimal format, but the context (Git refs file) definitively identifies this as a commit hash.","confidence":95,"addedAt":1769275864345}
{"contentHash":"611c7ad43bf0ea1c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\migration\\lfs-test.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40 hexadecimal characters) located in a Git refs file (refs/heads/master), not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/migration/lfs-test.git/refs/heads/master' indicates this is test data for a Git repository migration test. Git refs files contain commit hashes that point to specific commits, which is the expected format and content for this file type. While it matches the pattern of a 40-character hex string similar to some legacy tokens, the context clearly shows this is a legitimate Git reference.","confidence":95,"addedAt":1769275869695}
{"contentHash":"83e0cc26cc6e9593","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\org26\\repo_external_tracker_numeric.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) stored in a Git refs file, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/org26/repo_external_tracker_numeric.git/refs/heads/master' indicates this is part of a Git repository's internal structure where refs/heads/master contains the commit hash that the master branch points to. Git commit hashes are public identifiers, not secrets.","confidence":95,"addedAt":1769275957475}
{"contentHash":"69b616cd4406cb8e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo1.git\\refs\\heads\\home-md-img-check","reason":"AI: This is a Git reference file (refs/heads/home-md-img-check) containing a Git commit SHA-1 hash (78fb907e3a3309eae4fe8fef030874cebbf1cd5e), not a GitHub OAuth token. Git commit hashes are 40-character hexadecimal strings that look similar to tokens but are public identifiers for commits in version control. The file path structure 'refs/heads/' is the standard Git internal structure for storing branch references. This is test repository metadata, not a secret.","confidence":95,"addedAt":1769276263725}
{"contentHash":"66af926be9fd3739","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\org42\\search-by-path.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash (9f894b61946fd2f7b8b9d8e370e4d62f915522f5) in a packed-refs file, not a GitHub OAuth token. It references the master branch in a test Git repository.","confidence":95,"addedAt":1769276012224}
{"contentHash":"f35db7be60e096fa","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo1.git\\refs\\notes\\commits","reason":"AI: This is a Git reference hash located in a test repository's refs/notes/commits file. The file path 'tests\\gitea-repositories-meta\\user2\\repo1.git\\refs\\notes\\commits' clearly indicates this is test data for a Gitea repository. The value '3fa2f829675543ecfc16b2891aebe8bf0608a8f4' is a 40-character hexadecimal string which is the standard format for a Git commit SHA-1 hash, not a GitHub OAuth token. Git notes references store commit hashes, not secrets.","confidence":95,"addedAt":1769276281003}
{"contentHash":"5e253b6438d331e5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\org42\\search-by-path.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash (5f22f7d0d95d614d25a5b68592adb345a4b5c7fd) in a packed-refs file, not a GitHub OAuth token. It references a pull request (refs/pull/3/head) in a test Git repository.","confidence":95,"addedAt":1769276012233}
{"contentHash":"239e66c093253b4d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\org42\\search-by-path.git\\objects\\info\\packs","reason":"AI: This is a Git pack file reference in a standard Git repository metadata file. The string 'pack-a7bef76cf6e2b46bc816936ab69306fb10aea571.pack' is a Git pack filename where the hex string is a SHA-1 hash identifying the pack file, not a GitHub OAuth token. The file path 'objects/info/packs' is a standard Git internal structure file that lists available pack files. Additionally, this is in a test directory ('tests/gitea-repositories-meta'), confirming this is test data.","confidence":95,"addedAt":1769275996316}
{"contentHash":"ce97a88c20b74177","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\privated_org\\private_repo_on_private_org.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40 character hexadecimal string) stored in a Git refs file, not a GitHub OAuth token. The file path 'refs/heads/master' indicates this is a Git reference file that stores the commit hash that the master branch points to. Git commit SHAs are public identifiers, not secrets. While the pattern matches the format of a GitHub OAuth token (both are 40 hex characters), the context clearly shows this is a Git internal file.","confidence":95,"addedAt":1769276016900}
{"contentHash":"07a26e5e536cbab8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\privated_org\\public_repo_on_private_org.git\\refs\\heads\\master","reason":"AI: This is a Git reference file (refs/heads/master) containing a Git commit SHA-1 hash. The file path structure 'refs/heads/master' is the standard Git internal format for storing branch references. The 40-character hexadecimal string 'bf19fd4707acb403c4aca44f126ab69142ac59ce' is a Git commit hash, not a GitHub OAuth token. While both are 40-character hex strings, the context clearly indicates this is part of Git's internal repository structure in a test directory.","confidence":95,"addedAt":1769276021654}
{"contentHash":"32c223cc2e3bf7b1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user13\\repo11.git\\refs\\heads\\branch2","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) located in a Git refs file (.git/refs/heads/branch2), not a GitHub OAuth token. The file path and format clearly indicate this is a Git reference pointer to a commit object. Git commit hashes are public identifiers, not secrets. The pattern was misidentified as a GitHub OAuth token due to similar character length and hexadecimal format.","confidence":95,"addedAt":1769276058593}
{"contentHash":"ecbb8fb49fd32d02","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\commitsonpr.git\\refs\\pull\\1\\head","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) stored in a Git reference file under 'refs/pull/1/head'. The file path indicates this is part of a test repository structure ('tests/gitea-repositories-meta'). Git commit hashes are not secrets - they are public identifiers for commits. The pattern was incorrectly flagged as a GitHub OAuth token, but it's actually a standard Git reference.","confidence":95,"addedAt":1769276122905}
{"contentHash":"83d85d56960698f0","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\commits_search_test.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) stored in a Git refs file, not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user2/commits_search_test.git/refs/heads/master' indicates this is part of a test repository structure. Git refs files contain commit hashes that point to specific commits, which are public identifiers in version control systems, not secrets. The pattern was misidentified as a GitHub OAuth token due to similar character length and hexadecimal format.","confidence":95,"addedAt":1769276131898}
{"contentHash":"e9542eff47a49e44","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\glob.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40 hexadecimal characters) located in a Git refs file (refs/heads/master), which is the standard format for Git references. The file path 'tests/gitea-repositories-meta/user2/glob.git/refs/heads/master' indicates this is test data for a Gitea repository. Git commit SHAs are not secrets - they are public identifiers for commits in version control systems. The pattern was incorrectly flagged as a GitHub OAuth token due to similar hexadecimal format, but the context clearly shows it's a Git reference.","confidence":95,"addedAt":1769276163134}
{"contentHash":"33f02f73d10edf84","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash (40 hex characters) in a packed-refs file, not a GitHub OAuth token. The file is from a test repository (tests/gitea-repositories-meta) and contains Git references. Git SHAs follow the same format as some tokens but serve a completely different purpose.","confidence":95,"addedAt":1769276208449}
{"contentHash":"4bc5223f8f8ab07b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208452}
{"contentHash":"5aaf66507355f243","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208454}
{"contentHash":"c426e2aadd16d701","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208456}
{"contentHash":"4472eb28cc20b85b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208461}
{"contentHash":"7ca9e3fbf6538be1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208464}
{"contentHash":"9b0a4934b49bed8d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208466}
{"contentHash":"dcd005f6ed7a6b10","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208469}
{"contentHash":"7384c19445bad2e4","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208470}
{"contentHash":"2d380b49fa235df7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208473}
{"contentHash":"27c5bb820120cc12","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208475}
{"contentHash":"80556ca4b769d478","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208477}
{"contentHash":"3e91f4020b92db47","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208479}
{"contentHash":"4cce2c14fdcd1164","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208481}
{"contentHash":"3478a8b4e0867edf","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208482}
{"contentHash":"6c0b7ceee0470378","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208484}
{"contentHash":"ad1cbdb565a60c39","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208485}
{"contentHash":"ae9c6ec9e824eda7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208487}
{"contentHash":"75b2bf3bdf0b7f53","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208489}
{"contentHash":"60218e50cef51143","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208490}
{"contentHash":"a4edf9f121ff6f01","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\packed-refs","reason":"AI: This is a Git commit SHA-1 hash in a packed-refs file, not a GitHub OAuth token. Part of test repository structure.","confidence":95,"addedAt":1769276208493}
{"contentHash":"920ff4cd4af8aea6","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\objects\\info\\packs","reason":"AI: This is a Git pack file reference in a Git repository's objects/info/packs file. The string 'pack-8933bd634b76f8154310cccb52537a0195e43166.pack' is a Git pack filename where the hex string is a SHA-1 hash identifying the pack file, not a GitHub OAuth token. This is standard Git internal structure and the file path 'tests\\gitea-repositories-meta\\user2\\readme-test.git\\objects\\info\\packs' confirms this is test repository metadata.","confidence":99,"addedAt":1769276192582}
{"contentHash":"88e7adb3af9b0f76","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\readme-test.git\\refs\\heads\\fallbacks-broken-symlinks","reason":"AI: This is a Git reference file containing a commit SHA hash (40-character hexadecimal string). The file path 'tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks' indicates this is a Git repository reference file, which stores commit hashes, not OAuth tokens. Git commit SHAs are public identifiers and not secrets. The pattern was incorrectly flagged as a GitHub OAuth token due to similar character length and hexadecimal format.","confidence":95,"addedAt":1769276212882}
{"contentHash":"04183dae93ffaa18","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo1.wiki.git\\refs\\heads\\master","reason":"AI: This is a Git reference file (refs/heads/master) containing a Git commit SHA-1 hash, not a GitHub OAuth token. The file path 'tests\\gitea-repositories-meta\\user2\\repo1.wiki.git\\refs\\heads\\master' clearly indicates this is part of a Git repository structure in a test directory. Git commit hashes are 40-character hexadecimal strings that can superficially resemble tokens, but they are public identifiers, not secrets. The value 'a5bbc0fd39a696feabed2d4cccaf05abbcaf3b02' is a standard Git SHA-1 hash format.","confidence":95,"addedAt":1769276305091}
{"contentHash":"7aa4db6a38da0cae","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo2.git\\objects\\info\\packs","reason":"AI: This is a Git pack file reference in a test repository. The string 'pack-a2f7ad943b3d857eb3ebdb4b35eeef38f63cf5d2.pack' is a Git pack filename where the hex string is a SHA-1 hash used to identify the pack file, not a GitHub OAuth token. The file is located in 'tests/gitea-repositories-meta/user2/repo2.git/objects/info/packs' which is clearly test data for a Git repository structure. Git pack files use SHA-1 hashes in their naming convention (format: pack-<40-char-hex-hash>.pack), and this matches that pattern exactly.","confidence":95,"addedAt":1769276334650}
{"contentHash":"7a14cb8e779c6157","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo2.git\\refs\\tags\\v1.1","reason":"AI: This is a Git reference file (refs/tags/v1.1) containing a Git commit SHA-1 hash (40 hexadecimal characters). Git commit hashes are not secrets - they are public identifiers used in version control systems. The file path 'tests/gitea-repositories-meta/user2/repo2.git/refs/tags/v1.1' clearly indicates this is part of a test repository structure mimicking Gitea's internal Git storage format. The pattern was incorrectly flagged as a GitHub OAuth token, but it's actually a standard Git object identifier.","confidence":95,"addedAt":1769276349334}
{"contentHash":"31c674065ba4cfee","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo20.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40 hexadecimal characters) stored in a Git reference file (.git/refs/heads/master), not a GitHub OAuth token. The file path 'tests/gitea-repositories-meta/user2/repo20.git/refs/heads/master' indicates this is test data for a Gitea repository. Git commit SHAs are public identifiers, not secrets. The pattern was misidentified as a GitHub OAuth token due to similar character patterns.","confidence":95,"addedAt":1769276363291}
{"contentHash":"76cf3e3e2f6d5a14","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_commits_test.go","reason":"AI: This is a Git commit SHA hash (c8e31bc7688741a5287fcde4fbb8fc129ca07027) used in test assertions for file history testing. It's test data referencing a specific commit in the test repository.","confidence":95,"addedAt":1769276628299}
{"contentHash":"10405070e9cf787d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_commits_test.go","reason":"AI: This is a Git commit SHA hash (cfe3b3c1fd36fba04f9183287b106497e1afe986) used in test assertions to verify API responses return the correct commit. It's test data, not an authentication token.","confidence":95,"addedAt":1769276628275}
{"contentHash":"f63457df762ff21c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\repo20.git\\refs\\heads\\remove-files-b","reason":"AI: This is a Git reference file (refs/heads/remove-files-b) containing a Git commit SHA-1 hash, not a GitHub OAuth token. Git commit hashes are 40-character hexadecimal strings that can superficially match token patterns, but they are public identifiers used in version control systems. The file path 'tests/gitea-repositories-meta/user2/repo20.git/refs/heads/' clearly indicates this is test repository metadata storing a branch reference.","confidence":95,"addedAt":1769276371992}
{"contentHash":"a2f78c4f746e5f69","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\tags\\Тэг","reason":"AI: This is a Git object SHA-1 hash (40 hexadecimal characters) located in a Git refs/tags directory, not a GitHub OAuth token. The file path 'tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\tags\\Тэг' indicates this is part of a Git repository's internal structure where tag references point to commit hashes. Git SHA-1 hashes follow the same format as some API tokens but serve a completely different purpose in version control systems.","confidence":95,"addedAt":1769276421229}
{"contentHash":"eb0288b0b54ffbcb","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\utf8.git\\info\\refs","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) in a Git refs file, not a GitHub OAuth token. The file is located in tests/gitea-repositories-meta/user2/utf8.git/info/refs, which is clearly test data for a Git repository. Git commit hashes follow the same format as some API tokens but serve a completely different purpose.","confidence":99,"addedAt":1769276384055}
{"contentHash":"12e67425e5e3ef36","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA-1 hash (40 hexadecimal characters) located in a Git refs file (.git/refs/heads/master), not a GitHub OAuth token. The file path and format clearly indicate this is part of Git's internal repository structure used to track branch references. Git commit hashes are public identifiers, not secrets.","confidence":95,"addedAt":1769276393635}
{"contentHash":"ecdb3261f7f47bf7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\tags\\タグ","reason":"AI: This is a Git object SHA-1 hash (40 hexadecimal characters) located in a Git refs/tags directory, not a GitHub OAuth token. The file path 'tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\tags\\タグ' clearly indicates this is part of a Git repository's internal structure where tag references store commit hashes. Git SHA-1 hashes are public identifiers, not secrets. The pattern was misidentified as a GitHub OAuth token due to similar character patterns.","confidence":95,"addedAt":1769276426308}
{"contentHash":"0625237031c84e76","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user2\\utf8.git\\refs\\heads\\Plus+Is+Not+Space","reason":"AI: This is a Git reference file containing a commit SHA-1 hash (40 hexadecimal characters). The file path 'tests/gitea-repositories-meta/user2/utf8.git/refs/heads/Plus+Is+Not+Space' indicates this is a Git repository reference file in a test directory. Git commit hashes are not secrets - they are public identifiers for commits. The pattern was incorrectly flagged as a GitHub OAuth token, but it's actually a standard Git commit hash.","confidence":95,"addedAt":1769276397733}
{"contentHash":"b13020dac328f08e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\gitea-repositories-meta\\user27\\template1.git\\refs\\heads\\master","reason":"AI: This is a Git commit SHA hash (40-character hexadecimal string) stored in a Git reference file under refs/heads/master. The file path 'tests\\gitea-repositories-meta\\user27\\template1.git\\refs\\heads\\master' indicates this is part of a test repository structure. Git refs files contain commit hashes, not OAuth tokens. While the pattern matches the format of a GitHub OAuth token, the context clearly shows this is a Git object reference.","confidence":95,"addedAt":1769276449804}
{"contentHash":"ac6d3c286b39a98d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\actions_settings_test.go","reason":"AI: This is the same hardcoded token value detected by a different pattern matcher. As explained above, this is test fixture data in an integration test file used to verify authentication mechanisms. The token is associated with a test database record (ActionTask ID: 55, RepoID: 6) and is used to test git clone operations with task-based authentication. This is clearly test/mock data, not a real production secret.","confidence":95,"addedAt":1769276460630}
{"contentHash":"7879b32e5cb28194","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\actions_settings_test.go","reason":"AI: Similar to line 44, this is a URL path construction: fmt.Sprintf('/%s/%s/settings/actions/general/collaborative_owner/delete?id=%d', ...). The detected pattern is part of the URL path '/settings/actions/general/collaborative_owner/delete' which is a route endpoint, not a secret. This is a false positive from pattern matching.","confidence":98,"addedAt":1769254249526}
{"contentHash":"1bca219b9c94ffd1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_actions_permission_test.go","reason":"AI: This is the same test token ('8061e833a55f6fc0157c98b883e91fcfeeb1a71a') used in the 'testActionUserNoAccessOtherPrivateRepo' test function. The consistent reuse of this token across all test functions in the integration test file, combined with the test context (verifying permission scenarios), clearly indicates this is a test fixture established in the test environment setup, not a real secret.","confidence":95,"addedAt":1769276494312}
{"contentHash":"7c717f9a198f6a86","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_gpg_keys_test.go","reason":"AI: This is a URL path in a test file ('/api/v1/repos/user2/repo16/branches/good-sign'). The pattern matcher incorrectly flagged this as an AWS Secret Access Key due to the '/api' prefix and the word 'good' in the branch name. This is clearly a REST API endpoint path for testing Git branch operations with GPG signatures, not a secret key.","confidence":95,"addedAt":1769254287764}
{"contentHash":"12f7ee777a8499e9","patternId":"private-key-openssh","filePath":"..\\gitcaddy\\tests\\integration\\api_httpsig_test.go","reason":"AI: This is a test OpenSSH private key used in integration tests (file path: tests/integration/api_httpsig_test.go). The key is defined as a constant 'httpsigPrivateKey' and is used alongside a matching certificate constant 'httpsigCertificate' to test HTTP signature authentication functionality. The key is intentionally embedded in test code to verify the httpsig authentication mechanism works correctly. The presence of a matching public key certificate and the test context (TestHTTPSigPubKey and TestHTTPSigCert functions) clearly indicate this is test data, not a real secret.","confidence":95,"addedAt":1769254293168}
{"contentHash":"b6a787b8a32c2b3b","patternId":"private-key-rsa","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_chef_test.go","reason":"AI: This is a test RSA private key used in integration tests for the Chef package API. The file is located in 'tests/integration/' directory, and the key is hardcoded in test code to verify authentication mechanisms. The corresponding public key is also present in the test (line 56), and both are used to test Chef API authentication signing. This is clearly test/mock data for integration testing purposes, not a real production secret.","confidence":95,"addedAt":1769254303242}
{"contentHash":"2a3c635e67a81e9c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_composer_test.go","reason":"AI: This is the same SHA-1 checksum hash (40 hex characters: '4f5fa464c3cb808a1df191dbf6cb75363f8b7072') appearing again in the same test file, verifying the same package's integrity after linking it to a repository. This is a legitimate checksum value in Composer package metadata, not a GitHub OAuth token. The value is reused because it's testing the same package.","confidence":95,"addedAt":1769276500803}
{"contentHash":"0075593bfb08ba94","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_maven_test.go","reason":"AI: This is a SHA-1 hash value ('8696abce499fe84d9ea93e5492abe7147e195b6c') used in test code to verify the checksum of Maven metadata XML. It's testing the integrity verification feature of Maven package downloads. This is a cryptographic hash used for file verification, not a GitHub OAuth token.","confidence":99,"addedAt":1769276508811}
{"contentHash":"7d568b6a10b2c106","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_npm_test.go","reason":"AI: This is the same shasum hash value 'aaa7eaf852a948b0aa05afeda35b1badca155d90' appearing in a test assertion that validates the package metadata response. It's verifying that the shasum field in the NPM package dist metadata matches the expected test value. This is clearly test/mock data in an integration test, not a real GitHub OAuth token.","confidence":95,"addedAt":1769276516669}
{"contentHash":"07e23ede2756aa3f","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_packages_test.go","reason":"AI: This is the SHA-1 hash of an empty string (da39a3ee5e6b4b0d3255bfef95601890afd80709), which is a well-known constant value used in testing. The context shows this is part of a test file (api_packages_test.go) that validates package file hashes. The line is asserting that an uploaded empty file has the expected SHA-1 hash value. This is not a GitHub OAuth token but rather a cryptographic hash used for file integrity verification in tests.","confidence":99,"addedAt":1769276521449}
{"contentHash":"c0a7d6705b1094c8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\pull_commit_test.go","reason":"AI: This is a Git commit SHA hash (5c050d3b6d2db231ab1f64e324f1b6b9a0b181c2) used in integration test code to verify pull request commit listings. Git commit SHAs are not secrets - they are public identifiers in version control systems. The value is being used in an assertion to validate test data.","confidence":95,"addedAt":1769276739411}
{"contentHash":"132f5d5a6add1c27","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_archive_test.go","reason":"AI: This is a URL path in a test file ('/api/v1/repos/user2/repo1/archive/master.zip'). The pattern matcher incorrectly flagged this as an AWS Secret Access Key, but it's clearly just an API endpoint path for testing private repository access. The 'api' portion is part of the URL structure, not a secret key.","confidence":99,"addedAt":1769254377442}
{"contentHash":"478f30ad3e9f7f90","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_archive_test.go","reason":"AI: This is a URL path in a test file ('/api/v1/repos/user2/repo1/zipball/master'). The pattern matcher incorrectly flagged this as an AWS Secret Access Key, but it's clearly just an API endpoint path for testing private repository access in GitHub-style format. The 'api' portion is part of the URL structure, not a secret key.","confidence":99,"addedAt":1769254377446}
{"contentHash":"4e7710132c60767b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Same Git blob SHA hash (103ff9234cefeee5ec5361d22b49fbb04d385885) as line 103, used for test assertions. This is a public Git object identifier.","confidence":95,"addedAt":1769276778993}
{"contentHash":"c52506870495705e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_file_create_test.go","reason":"AI: This is the same SHA hash value as line 66, used in the test function 'TestAPICreateFile' to verify the expected SHA of a created file. The variable 'expectedSHA' is assigned this value and compared against the API response. This is clearly test data representing a Git blob SHA-1 hash, not a GitHub OAuth token despite the pattern match.","confidence":95,"addedAt":1769276560884}
{"contentHash":"04b0297c880cdf90","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_file_update_test.go","reason":"AI: This is a Git blob SHA hash (08bd14b2e2852529157324de9c226b3364e76136) used in test assertions for file rename operations. Same SHA value used consistently throughout the test file as expected content hash. This is mock/test data, not a real authentication credential.","confidence":95,"addedAt":1769276578804}
{"contentHash":"daafe79cfeb2dc84","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_get_contents_test.go","reason":"AI: This is a base64-encoded test string 'IyByZXBvMQoKRGVzY3JpcHRpb24gZm9yIHJlcG8x' which decodes to '# repo1\\n\\nDescription for repo1'. It's mock content data used in integration tests for API responses, not an AWS secret key.","confidence":95,"addedAt":1769254434262}
{"contentHash":"39a2cd4a80e8ab0e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_trees_test.go","reason":"AI: This is a Git commit/tree SHA hash (d56a3073c1dbb7b15963110a049d50cdb5db99fc) used in the API endpoint URL for testing access control, not a GitHub OAuth token. It's test data verifying that user4 cannot access org3/repo3's Git tree objects.","confidence":95,"addedAt":1769276643988}
{"contentHash":"e46c48949f7eab49","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_repo_git_blobs_test.go","reason":"AI: This is a Git SHA-1 hash (f90451c72ef61a7645293d17b47be7a8e983da57) used in integration tests to reference a specific blob object. The variable name 'repo16ReadmeSHA' clearly indicates this is a Git commit/blob SHA, not a GitHub OAuth token. This is test code using repository object identifiers.","confidence":95,"addedAt":1769276606261}
{"contentHash":"a67d1ca1f508362e","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_commits_test.go","reason":"AI: This is a Git commit SHA hash (5099b81332712fe655e34e8dd63574f503f61811) used in integration tests, not a GitHub OAuth token. The value appears in an assertion checking commit IDs in a test repository. Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769276795937}
{"contentHash":"2ee7696ba95db47c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_wiki_test.go","reason":"AI: This is the same Git commit SHA hash (2c54faec6c45d31c1abfaecdab471eac6633738a) appearing a third time in the TestAPIListPageRevisions test function. It's used to verify wiki revision data. Git commit hashes are public repository identifiers, not authentication secrets.","confidence":95,"addedAt":1769276666063}
{"contentHash":"4418caf846fb5ca7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_wiki_test.go","reason":"AI: This is a Git commit SHA hash (0cf15c3f66ec8384480ed9c3cf87c9e97fbb0ec3) used in test data to represent a wiki page commit. It's part of mock data structure in an integration test. Git commit hashes are public identifiers that reference specific commits in a repository, not authentication credentials.","confidence":95,"addedAt":1769276666057}
{"contentHash":"f8a9c76c4a896290","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_wiki_test.go","reason":"AI: This is a Git commit SHA hash (c10d10b7e655b3dab1f53176db57c8219a5488d6) used in test fixture data. It represents a commit for a wiki page with a spaced name. Git commit SHAs are public repository metadata, not secrets that need protection.","confidence":95,"addedAt":1769276666059}
{"contentHash":"7afbea7d12412cd5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\api_wiki_test.go","reason":"AI: This is a Git commit SHA hash (0dca5bd9b5d7ef937710e056f575e86c0184ba85) used in test data for an 'Unescaped File' wiki page. Like all Git commit hashes, this is a public identifier that references a specific commit in version control, not a secret credential.","confidence":95,"addedAt":1769276666061}
{"contentHash":"226bb89915b4ee0a","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\integration\\nonascii_branches_test.go","reason":"AI: This is a false positive. The detected pattern 'bran********************alid' is part of a URL path string 'branch/Plus+Is+Not+Space/and+it+is+valid.md' in a test file. This is testing URL encoding and non-ASCII branch names in Git repositories, not an AWS secret key. The pattern match is coincidental due to the substring 'and+it+is+valid' being misidentified as a secret.","confidence":99,"addedAt":1769254514955}
{"contentHash":"b2582f52fc08270d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\pull_diff_test.go","reason":"AI: This is a Git commit SHA hash (23576dd018294e476c06e569b6b0f170d0558705) used in a test file for integration testing. It represents the end of a commit range in a PR diff URL. Git commit SHAs are public version control identifiers, not authentication tokens or secrets.","confidence":95,"addedAt":1769276745596}
{"contentHash":"24a6797539be0fbc","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Same Git blob SHA hash (dbf8d00e022e05b7e5cf7e535de857de57925647) as line 173, used in test assertions.","confidence":95,"addedAt":1769276779001}
{"contentHash":"43931722a46db0e4","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Same Git tree SHA hash (f93e3a1a1525fb5b91020da86e44810c87a2d7bc) repeated in test code.","confidence":95,"addedAt":1769276779010}
{"contentHash":"e714df9cabc96165","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git blob SHA hash (8276d2a29779af982c0afa976bdb793b52d442a8) used in test code for file rename operations. Public Git object identifier.","confidence":95,"addedAt":1769276779013}
{"contentHash":"c7e56f5ff15879f8","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git blob SHA hash (d4a41a0d4db4949e129bd22f871171ea988103ef) used in test code for LFS file operations. Public Git object identifier.","confidence":95,"addedAt":1769276779014}
{"contentHash":"3706f7ee37cefb5c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git blob SHA hash (71911bf48766c7181518c1070911019fbb00b1fc) used in test code for JPEG file operations. Public Git object identifier.","confidence":95,"addedAt":1769276779016}
{"contentHash":"64b7cd98891b90b5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Git blob SHA hash (2b6c6c4eaefa24b22f2092c3d54b263ff26feb58) used in test code for LFS binary file operations. Public Git object identifier.","confidence":95,"addedAt":1769276779018}
{"contentHash":"ddd220c436305fb7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repofiles_change_test.go","reason":"AI: Same Git tree SHA hash (5307376dc3a5557dc1c403c29a8984668ca9ecb5) as line 333, repeated in test code.","confidence":95,"addedAt":1769276779026}
{"contentHash":"bbb69eedf3c4150f","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\tests\\sqlite.ini.tmpl","reason":"AI: This is a test configuration file (tests/sqlite.ini.tmpl) for Gitea's test suite. The value 'Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w' is the LFS_JWT_SECRET used in automated testing. Multiple indicators suggest this is a test value: 1) File is in 'tests/' directory with .tmpl extension, 2) Contains template variables like {{TEST_TYPE}}, 3) Uses dummy mailer protocol, 4) References test paths throughout, 5) This is a static test secret that would be committed to version control for reproducible test environments. Similar test secrets appear on lines 103 (SECRET_KEY) and 109 (JWT_SECRET).","confidence":95,"addedAt":1769254607040}
{"contentHash":"76e9f7fba3566191","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\web_src\\js\\features\\user-auth-webauthn.ts","reason":"AI: This is a false positive. The detected pattern '/use********************uest' is actually part of a URL path '/user/settings/security/webauthn/request_register' in the code. The asterisks in the detection are masking the middle portion of the URL path, but this is clearly an API endpoint path, not an AWS Secret Access Key. The context shows this is a POST request to a WebAuthn registration endpoint.","confidence":99,"addedAt":1769254617775}
{"contentHash":"0ac902c1610f6527","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\web_src\\js\\webcomponents\\polyfills.ts","reason":"AI: This is a URL path to a GitHub/GitLab issue tracker (repo.palemoon.org/MoonchildProductions/UXP/issues/2289), not an AWS secret key. The pattern 'org/********************2289' is part of a comment referencing a bug report about Intl.NumberFormat support in PaleMoon browser. The '2289' is simply the issue number, and the asterisks in the detection are likely from the path components being redacted by the scanner.","confidence":99,"addedAt":1769254622685}
{"contentHash":"0a002c26600ac250","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is a Visual Studio Project GUID (455910FC-CC9B-244E-E3A8-78E8113461FC) used to identify the 'csharp' project folder. These are standard Visual Studio identifiers, not API keys.","confidence":99,"addedAt":1769274527854}
{"contentHash":"2ac37e27e5f3f353","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is the Project GUID (FF13A09E-0E72-1904-124B-A4E979EF28D3) used in nested project configuration. These are project structure identifiers, not API keys.","confidence":99,"addedAt":1769274527873}
{"contentHash":"0a967abf18dc96d2","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is the Project GUID (455910FC-CC9B-244E-E3A8-78E8113461FC) used in nested project configuration. These are standard Visual Studio identifiers.","confidence":99,"addedAt":1769274527877}
{"contentHash":"ca1930afd4dcd9ba","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is a Visual Studio Project GUID (CC3F3F81-98F0-4F04-FB6D-D977CE0360AA) for the Gitea.SDK project. These are randomly generated identifiers by Visual Studio, not secrets.","confidence":99,"addedAt":1769274527857}
{"contentHash":"cc9d9007370a8445","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is the Project GUID (455910FC-CC9B-244E-E3A8-78E8113461FC) used in nested project configuration. These are standard Visual Studio identifiers.","confidence":99,"addedAt":1769274527875}
{"contentHash":"670b00e6b8859f36","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\gitcaddy-server.sln","reason":"AI: This is a Solution GUID (6836703D-481F-41AE-8B58-7FB4F2B4A88C) used by Visual Studio to uniquely identify the solution. These are randomly generated by Visual Studio and are not secrets.","confidence":99,"addedAt":1769274527879}
{"contentHash":"bc308ecaf2a38e27","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\models\\asymkey\\ssh_key_authorized_keys.go","reason":"AI: This is part of a GitHub URL in a code comment that references the OpenSSH source code repository. The detected pattern '32deb00b38b4ee2b3302f261ea1e68c04e020a08' is actually a Git commit hash in the URL 'https://github.com/openssh/openssh-portable/blob/32deb00b38b4ee2b3302f261ea1e68c04e020a08/auth2-pubkeyfile.c#L221-L256'. Git commit hashes are public identifiers, not secrets. The comment is explaining how the code reverse engineers sshd's authorized keys file parsing.","confidence":95,"addedAt":1769274545878}
{"contentHash":"0cd10f417c317b39","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\auth\\oauth2.go","reason":"AI: This is a UUID (a4792ccc-144e-407e-86c9-5e7d8d9c3269) used as a client ID for a builtin OAuth2 application. It's part of the BuiltinApplications() function that defines hardcoded, well-known OAuth2 client IDs for git credential helpers. UUIDs are not secrets - they are identifiers. The actual secret would be the client_secret field, not the client_id.","confidence":95,"addedAt":1769274564416}
{"contentHash":"827d3bbbf23cca4a","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\auth\\oauth2.go","reason":"AI: This is a UUID (e90ee53c-94e2-48ac-9358-a874fb9e0662) used as a client ID for the 'Git Credential Manager' builtin OAuth2 application. Like the previous entry, this is a public identifier, not a secret. OAuth2 client IDs are meant to be public and are used to identify the application, while client secrets are the confidential values.","confidence":95,"addedAt":1769274564419}
{"contentHash":"50b0f48aa2280538","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\auth\\oauth2.go","reason":"AI: This is a UUID (d57cb8c4-630c-4168-8324-ec79935e18d4) used as a client ID for the 'tea' builtin OAuth2 application. This is another public OAuth2 client identifier, not a secret. The code shows these are hardcoded builtin applications that are registered in the system, and client IDs in OAuth2 are public by design.","confidence":95,"addedAt":1769274564422}
{"contentHash":"ed4adc29381a8583","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: Test OAuth2 client_id 'da7da3ba-9a13-4167-856f-3899de0b0138' used in another test case within TestOAuthIntrospection.","confidence":95,"addedAt":1769276732038}
{"contentHash":"c165687b311631c7","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner.yml","reason":"AI: This is a token_hash field containing the same UUID value (3EF231BD-FBB7-4E4B-9602-E6F28363EF18) as the uuid field above it in a test fixtures file. While token hashes could be sensitive, this is clearly test data with placeholder values, and the hash matches the UUID exactly which is not realistic for production.","confidence":95,"addedAt":1769274621082}
{"contentHash":"b9bc7e5a6b58b11d","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner.yml","reason":"AI: This is a token_hash field containing the same UUID value (3EF231BD-FBB7-4E4B-9602-E6F28363EF19) as the uuid field in a test fixtures file. The pattern of token_hash matching uuid exactly indicates this is test/mock data, not real credentials.","confidence":95,"addedAt":1769274621086}
{"contentHash":"d2de5c6b29554850","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner.yml","reason":"AI: This is a token_hash field containing the same UUID value (3EF231BD-FBB7-4E4B-9602-E6F28363EF20) as the uuid field in a test fixtures file. The consistent pattern of matching uuid/token_hash pairs confirms this is test data.","confidence":95,"addedAt":1769274621090}
{"contentHash":"b15e65966b02eebc","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner.yml","reason":"AI: This is a token_hash field containing the same UUID value (3EF231BD-FBB7-4E4B-9602-E6F28363EF17) as the uuid field in a test fixtures file. Following the same pattern as other entries, this is test data.","confidence":95,"addedAt":1769274621094}
{"contentHash":"8afa76ef18520c84","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\action_runner.yml","reason":"AI: This is a token_hash field containing the same UUID value (3FF231BD-FBB7-4E4B-9602-E6F28363EF20) as the uuid field in a test fixtures file. Consistent with all other entries, this is test data with the token_hash matching the uuid.","confidence":95,"addedAt":1769274621100}
{"contentHash":"0aca198ee7979a67","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11) used in integration test code for testing public access by non-logged users. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680923}
{"contentHash":"61f584658fe47ac0","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12) used in integration test code for testing repository access restrictions. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680931}
{"contentHash":"dc9c518471a34a04","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\attachment.yml","reason":"AI: This is a UUID field in a test fixture file. The value 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a13' is part of a sequential series of test UUIDs, not a Heroku API key. It's clearly mock data for testing attachment functionality.","confidence":99,"addedAt":1769274663638}
{"contentHash":"d9e729ce666a27c5","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\modules\\storage\\local_test.go","reason":"AI: Same UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a14) in expected test result. This is test code for path normalization, not a real API key.","confidence":99,"addedAt":1769275460493}
{"contentHash":"3cf3d9243b7f2c3d","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\attachment.yml","reason":"AI: This is a UUID field in a test fixture file. The value 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15' is part of a sequential series of test UUIDs, not a Heroku API key. It's clearly mock data for testing attachment functionality.","confidence":99,"addedAt":1769274663643}
{"contentHash":"a55f89d5f09b7d48","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\attachment.yml","reason":"AI: This is a UUID field in a test fixture file. The value 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a16' is part of a sequential series of test UUIDs, not a Heroku API key. It's clearly mock data for testing attachment functionality.","confidence":99,"addedAt":1769274663646}
{"contentHash":"651f46a6f16cdafb","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17) used in integration test code for testing comment attachment functionality. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680910}
{"contentHash":"ba425bd5d0381324","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18) used in integration test code for testing missing file scenarios. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680917}
{"contentHash":"5d7be51f0755dbf8","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a19) used in integration test code for testing release attachment functionality. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680913}
{"contentHash":"2b48f491c469b8e9","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a20) used in integration test code for testing uploader access scenarios. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680921}
{"contentHash":"bfd629c97eb63cc6","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21) used in integration test code for testing organization access restrictions. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680933}
{"contentHash":"4f874cd6503a862e","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\fixtures\\attachment.yml","reason":"AI: This is a UUID field in a test fixture file. The value 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a22' is part of a sequential series of test UUIDs, not a Heroku API key. It's clearly mock data for testing attachment functionality.","confidence":99,"addedAt":1769274663660}
{"contentHash":"325606b5dcd98d70","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: Test OAuth2 client_id 'ce5a1322-42a7-11ed-b878-0242ac120002' used in TestAccessTokenExchangeWithPublicClient test.","confidence":95,"addedAt":1769276732018}
{"contentHash":"a4d869f7ac31a303","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\models\\repo\\release_test.go","reason":"AI: This is a UUID (a0eebc91-9c0c-4ef7-bb6e-6bb9bd380a12) used as a test fixture for an Attachment object in a unit test. It follows the standard UUID v4 format and is being used to test the InsertReleases function. This is clearly test data, not a Heroku API key. The context shows it's part of a test database setup.","confidence":95,"addedAt":1769274830736}
{"contentHash":"a69c47e0e9deeb99","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\modules\\hcaptcha\\hcaptcha_test.go","reason":"AI: This appears to be detecting the same dummySiteKey from line 18. The value '10000000-ffff-ffff-ffff-000000000001' is a test constant with obvious placeholder patterns. It's defined as a const in test code and used throughout the test suite as mock data.","confidence":99,"addedAt":1769275294080}
{"contentHash":"5da2b544bed6f4ae","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\modules\\hcaptcha\\hcaptcha_test.go","reason":"AI: This is a dummy/test token defined in a test file. The value '10000000-aaaa-bbbb-cccc-000000000001' follows an obvious test pattern with repeating sequences (aaaa-bbbb-cccc) and is explicitly named 'dummyToken'. It's used in the mockTransport to simulate hCaptcha responses in unit tests.","confidence":99,"addedAt":1769275294083}
{"contentHash":"47759ebffcc8144e","patternId":"generic-secret","filePath":"..\\gitcaddy\\modules\\hcaptcha\\hcaptcha_test.go","reason":"AI: This appears to be detecting the same dummySiteKey from line 18. The value '10000000-ffff-ffff-ffff-000000000001' is a test constant with obvious placeholder patterns. It's defined as a const in test code and used throughout the test suite as mock data.","confidence":99,"addedAt":1769275294085}
{"contentHash":"bf526d77053db08d","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\modules\\indexer\\issues\\internal\\tests\\tests.go","reason":"AI: This is a UUID (f1dfac73-fda6-4a6b-b8a4-2408fcb8ef69) used as a test keyword in a search test case to verify empty search results. The context shows it's part of a test suite (package tests) with the comment 'All the code in this package is only used for testing.' The value is used in SearchOptions.Keyword field to test that searching for a non-existent UUID returns zero results (ExpectedIDs: []int64{}, ExpectedTotal: 0). This is clearly test data, not a real API key.","confidence":95,"addedAt":1769275300840}
{"contentHash":"bddc0bee3d618461","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\lfs\\http_client.go","reason":"AI: This is a Git commit SHA hash from a GitHub URL reference in a code comment, not a GitHub OAuth token. The pattern 'a32a02b44bf8a511aa14f047627c49e1a7fd5021' is a 40-character hexadecimal Git commit hash that appears in a URL pointing to the git-lfs documentation repository (https://github.com/git-lfs/git-lfs/blob/a32a02b44bf8a511aa14f047627c49e1a7fd5021/docs/api/batch.md). Git commit SHAs are public identifiers, not secrets.","confidence":95,"addedAt":1769275310082}
{"contentHash":"41ee05bb34f88c87","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\markup\\html_internal_test.go","reason":"AI: Same fake SHA hash with colon - test data for validating pattern matching with trailing punctuation.","confidence":100,"addedAt":1769275334903}
{"contentHash":"37573b2243da7c2c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\markup\\orgmode\\orgmode.go","reason":"AI: This is a GitHub commit hash reference in a URL comment (https://github.com/niklasfasching/go-org/blob/6eb20dbda93cb88c3503f7508dc78cbbc639378f/org/html_writer.go#L406-L427). The pattern '6eb20dbda93cb88c3503f7508dc78cbbc639378f' is a 40-character Git SHA-1 commit hash, not a GitHub OAuth token. Git commit hashes are public identifiers used to reference specific commits in version control and are not secrets.","confidence":95,"addedAt":1769275371497}
{"contentHash":"4fe35907064f0c86","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\conda\\metadata.go","reason":"AI: This is a GitHub commit hash reference in a URL comment (https://github.com/conda/conda-build/blob/db9a728a9e4e6cfc895637ca3221117970fc2663/conda_build/metadata.py#L1403). The 'db9a728a9e4e6cfc895637ca3221117970fc2663' is a Git commit SHA, not a GitHub OAuth token. Git commit SHAs are 40 hexadecimal characters and are public information used to reference specific commits in repositories.","confidence":95,"addedAt":1769275383109}
{"contentHash":"ab0ab1b66ae9a7a1","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\nuget\\metadata.go","reason":"AI: This is part of a GitHub URL in a code comment referencing the NuGet.Client source code repository. The pattern 'dccbd304b11103e08b97abf4cf4bcc1499d9235a' is actually a Git commit hash (40 character hexadecimal string), not a GitHub OAuth token. The full URL is 'https://github.com/NuGet/NuGet.Client/blob/dccbd304b11103e08b97abf4cf4bcc1499d9235a/src/NuGet.Core/NuGet.Versioning/VersionFormatter.cs#L121' which is a standard GitHub permalink to a specific file at a specific commit.","confidence":95,"addedAt":1769275399384}
{"contentHash":"39ac00771440ac4b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\packages\\pub\\metadata.go","reason":"AI: This is a commit hash in a GitHub URL comment reference, not a GitHub OAuth token. The pattern appears in a comment that references a specific line in the dart-lang/pub-dev repository (https://github.com/dart-lang/pub-dev/blob/4d582302a8d10152a5cd6129f65bf4f4dbca239d/...). The '4d582302a8d10152a5cd6129f65bf4f4dbca239d' is a 40-character Git commit SHA, which happens to match the pattern for GitHub tokens but is clearly being used as a source code reference in a URL.","confidence":95,"addedAt":1769275405158}
{"contentHash":"df84ab47b7bb8c62","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\modules\\ssh\\ssh.go","reason":"AI: This is part of a GitHub URL in a code comment that references the gliderlabs/ssh library source code. The pattern 'd137aad99cd6f2d9495bfd98c755bec4e5dffb8c' is a Git commit hash, not a GitHub OAuth token. The full URL is 'https://github.com/gliderlabs/ssh/blob/d137aad99cd6f2d9495bfd98c755bec4e5dffb8c/session.go#L109-L113' which is a public repository reference.","confidence":95,"addedAt":1769275441767}
{"contentHash":"5fe6568e87825574","patternId":"generic-secret","filePath":"..\\gitcaddy\\modules\\storage\\azureblob_test.go","reason":"AI: This is the well-known Azurite development storage account key, which is documented in Microsoft's official documentation (as referenced in the comment on line 25). Azurite is a local Azure Storage emulator for development/testing purposes, and this key 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==' is a publicly known default credential that is the same across all Azurite installations. The code is clearly test code (filename ends in _test.go), and the comment explicitly references Microsoft's documentation about well-known storage account credentials.","confidence":95,"addedAt":1769275448753}
{"contentHash":"5f19b3cd02bef156","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\web_src\\js\\utils\\color.ts","reason":"AI: This is a GitHub commit hash appearing in a URL comment that references a specific implementation in the color-js library. The pattern 'eb7b53f7a13bb716ec8b28c7a56f052cd599acd9' is a 40-character Git SHA-1 hash used to link to a specific version of code, not a GitHub OAuth token. The full context shows it's part of a GitHub URL: 'https://github.com/color-js/color.js/blob/eb7b53f7a13bb716ec8b28c7a56f052cd599acd9/src/contrast/APCA.js#L42' which is a standard way to reference specific commits in GitHub repositories.","confidence":95,"addedAt":1769276864806}
{"contentHash":"7357d7bf26cc2c7a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\routers\\api\\packages\\chef\\auth.go","reason":"AI: This is part of a GitHub URL in a code comment that references documentation. The string 'bc8adbef833d4be23dc78cb23e6fe44b51ebc34f' is a Git commit hash in the URL 'https://github.com/chef/mixlib-authentication/blob/bc8adbef833d4be23dc78cb23e6fe44b51ebc34f/lib/mixlib/authentication/signedheaderauth.rb', not a GitHub OAuth token. Git commit hashes are public identifiers and not secrets.","confidence":95,"addedAt":1769275494578}
{"contentHash":"f37283f31c626fad","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\repository\\branch.go","reason":"AI: This is not a GitHub OAuth token. The detected pattern 'cb52********************ca48' is part of a URL in a code comment that references a specific line in the Gitea GitHub repository (https://github.com/go-gitea/gitea/blob/cb52b17f92e2d2293f7c003649743464492bca48/cmd/hook.go#L27). The 'cb52...ca48' is a Git commit SHA hash, not an OAuth token. Git commit SHAs are 40-character hexadecimal strings and are public identifiers, not secrets.","confidence":95,"addedAt":1769275733851}
{"contentHash":"ae1dcbeaabdd77b7","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\services\\auth\\auth_test.go","reason":"AI: This is a UUID (6d92a9ee-5d8b-4993-97c9-6181bdaa8955) used in a test file path for testing attachment URLs, not a Heroku API key. The value appears in a test case array testing path detection for '/owner/repo/attachments/{uuid}' patterns. UUIDs are commonly used as attachment identifiers in web applications and this is clearly test data.","confidence":95,"addedAt":1769275551299}
{"contentHash":"ff3022747a58abdb","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\packages\\arch\\vercmp.go","reason":"AI: This is a Git commit hash in a URL comment referencing the upstream pacman source code on GitLab. The pattern 'd55b47e5512808b67bc944feb20c2bcc6c1a4c45' is a 40-character SHA-1 commit hash, not a GitHub OAuth token. The full URL 'https://gitlab.archlinux.org/pacman/pacman/-/blob/d55b47e5512808b67bc944feb20c2bcc6c1a4c45/lib/libalpm/version.c' is a source code reference link showing where the implementation was derived from.","confidence":99,"addedAt":1769275710065}
{"contentHash":"41b09727307bd235","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\repository\\archiver\\archiver.go","reason":"AI: This is not a GitHub OAuth token. The detected pattern '5676********************80a7' appears in a URL construction context where it's actually the commit ID being used in a Link header. Looking at the code, this is part of `archiveReq.CommitID` which is a Git commit SHA, not an OAuth token. The pattern matcher incorrectly flagged this as a secret due to the hexadecimal format of Git commit IDs resembling token patterns.","confidence":95,"addedAt":1769275728102}
{"contentHash":"134de1e285e8684a","patternId":"generic-secret","filePath":"..\\gitcaddy\\tests\\integration\\actions_settings_test.go","reason":"AI: This is the same hardcoded token value detected by a different pattern matcher. As explained above, this is test fixture data in an integration test file used to verify authentication mechanisms. The token is associated with a test database record (ActionTask ID: 55, RepoID: 6) and is used to test git clone operations with task-based authentication. This is clearly test/mock data, not a real production secret.","confidence":95,"addedAt":1769276460632}
{"contentHash":"a8a9fdc91ec6b51d","patternId":"heroku-api-key","filePath":"..\\gitcaddy\\tests\\integration\\attachment_test.go","reason":"AI: This is a UUID (b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18) used in integration test code for testing non-existing attachment scenarios. This is test fixture data, not a Heroku API key.","confidence":95,"addedAt":1769276680915}
{"contentHash":"3218f4d52f5c501a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\download_test.go","reason":"AI: This is the same Git blob SHA-1 hash (6395b68e1feebb1e4c657b4f9f6ba2676a283c0b) as line 34, reused in another test case for media download with SVG headers. These are public Git object identifiers used in integration tests, not authentication tokens.","confidence":95,"addedAt":1769276689547}
{"contentHash":"3e0576c3c704b697","patternId":"generic-secret","filePath":"..\\gitcaddy\\tests\\integration\\oauth_test.go","reason":"AI: Same test client_secret '4MK8Na6R55smdCY0WuCCumZ6hjRPnGY5saWVRHHjJiA=' used in another test case within TestOAuthIntrospection.","confidence":95,"addedAt":1769276732060}
{"contentHash":"887c5c23a9d6736a","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\pull_diff_test.go","reason":"AI: This is a Git commit SHA hash (c5626fc9eff57eb1bb7b796b01d4d0f2f3f792a2) used in a test file for integration testing of pull request diffs. The value is part of a URL path to test viewing a specific commit in a PR. Git commit SHAs are public identifiers in version control systems, not secrets.","confidence":95,"addedAt":1769276745591}
{"contentHash":"d4b3c24636c8758d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\pull_diff_test.go","reason":"AI: This is a Git commit SHA hash (23576dd018294e476c06e569b6b0f170d0558705) used in a test file for integration testing. It represents the end of a commit range in a PR diff URL. Git commit SHAs are public version control identifiers, not authentication tokens or secrets.","confidence":95,"addedAt":1769276745594}
{"contentHash":"ca36fff3b5571b87","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\tests\\integration\\repo_branch_test.go","reason":"AI: This is a Git commit SHA hash (acd1d892867872cb47f3993468605b8aa59aa2e0) used in integration test code to reference a specific commit. It's part of a test case URL path 'commit/acd1d892867872cb47f3993468605b8aa59aa2e0' for testing branch creation from a commit. Git commit SHAs are public identifiers in repositories, not secrets.","confidence":95,"addedAt":1769276784802}
{"contentHash":"a3133f5b78429474","patternId":"jwt-token","filePath":"..\\gitcaddy\\tests\\pgsql.ini.tmpl","reason":"AI: This is a test configuration file (tests/pgsql.ini.tmpl) containing a JWT token used for testing purposes. The file contains multiple test-related placeholders like {{TEST_PGSQL_HOST}}, {{TEST_TYPE}}, etc. The JWT token 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ' is a static test token (decodes to a simple payload with nbf:1495551618) that is hardcoded for test environments. The SECRET_KEY is also a simple test value '9pCviYTWSb'. Additionally, the file contains obviously fake credentials like MINIO_ACCESS_KEY_ID = 123456 and MINIO_SECRET_ACCESS_KEY = 12345678, confirming this is test data.","confidence":95,"addedAt":1769276828542}
{"contentHash":"9d9797316d2ebf1e","patternId":"generic-secret","filePath":"..\\gitcaddy\\tests\\mssql.ini.tmpl","reason":"AI: This is the well-known Azure Storage Emulator (Azurite) default account key 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='. This is a publicly documented default key used by the Azure storage emulator for local development and testing. The account name 'devstoreaccount1' and endpoint 'azurite.local' confirm this is for local testing with the Azurite emulator, not real Azure storage credentials.","confidence":98,"addedAt":1769276815847}
{"contentHash":"28032a4fa265d0c9","patternId":"jwt-token","filePath":"..\\gitcaddy\\tests\\sqlite.ini.tmpl","reason":"AI: This is a test configuration file (tests/sqlite.ini.tmpl) for Gitea's test suite. The JWT token 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8' is used as INTERNAL_TOKEN for testing purposes. The file contains multiple test-specific values (TEST_TYPE placeholders, test paths, dummy mailer protocol, test email addresses like 'sqlite-{{TEST_TYPE}}-test@gitea.io'). The JWT payload decodes to a simple nbf (not before) claim with timestamp 1492795983, which is a static test value. This is clearly a hardcoded test token meant for automated testing, not a production secret.","confidence":95,"addedAt":1769276835337}
{"contentHash":"5da1471323c264da","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\web_src\\css\\chroma\\light.css","reason":"AI: This is a GitHub commit SHA hash from a URL reference (https://github.com/alecthomas/chroma/blob/6428fb4e65f3c1493491571c8a6a8f1add1da822/types.go#L208), not a GitHub OAuth token. The pattern '6428fb4e65f3c1493491571c8a6a8f1add1da822' is a 40-character hexadecimal commit hash used to reference a specific version of source code. This is public information and not a secret credential.","confidence":99,"addedAt":1769276845672}
{"contentHash":"b2170345622da801","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\web_src\\css\\features\\console.css","reason":"AI: This is a Git commit hash from a GitHub URL reference in a CSS comment, not a GitHub OAuth token. The pattern '697ff23bd8dc48b9d23f11f259f5256dae2455f0' is a 40-character SHA-1 commit hash that appears in the URL 'https://github.com/buildkite/terminal-to-html/blob/697ff23bd8dc48b9d23f11f259f5256dae2455f0/assets/terminal.css'. This is a public reference to a specific version of a CSS file being used as a basis for this code.","confidence":99,"addedAt":1769276851537}
{"contentHash":"2562231c0cabc4c2","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\web_src\\css\\modules\\normalize.css","reason":"AI: This is a Git commit hash from a GitHub URL reference in a CSS comment, not a GitHub OAuth token. The pattern '2f9eacd9d3d995c937b4251a5557d95d494c9be1' is part of a Mozilla Gecko repository URL (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) used to reference the source of a CSS fix. Git commit hashes are 40 hexadecimal characters and are public identifiers, not secrets.","confidence":99,"addedAt":1769276856120}
{"contentHash":"3674709a0ad91271","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\web_src\\js\\features\\heatmap.ts","reason":"AI: This is a Git commit hash reference in a comment (a83761cbbae3c2e3b4bced71e680f44432073ac8), not a GitHub OAuth token. The comment references a specific GitHub pull request commit URL. Git commit hashes are 40-character hexadecimal strings and are public identifiers, not secrets. The pattern matcher incorrectly flagged this as a token due to the alphanumeric pattern.","confidence":99,"addedAt":1769276860064}
{"contentHash":"42a152b5befa1cec","patternId":"pkcs12","filePath":"..\\gitcaddy\\options\\gitignore\\OpenSSL","reason":"Manually marked as false positive","addedAt":1769282350503}
{"contentHash":"bde309f829bd09cc","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\assets\\go-licenses.json","reason":"Manually marked as false positive","addedAt":1769282615250}
{"contentHash":"b84d31ad8af250f3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811830}
{"contentHash":"57660ce3d831bdfb","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811820}
{"contentHash":"58404645c8579166","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811829}
{"contentHash":"130cde6fef6361fd","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811814}
{"contentHash":"7e544495a20d5ed2","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811811}
{"contentHash":"3636ae0810cb1723","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811827}
{"contentHash":"b5f3af2a54e1cbf9","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811832}
{"contentHash":"27a9edf592d2c94d","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811828}
{"contentHash":"7148f0225feab9ac","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811839}
{"contentHash":"ebe86ac40a10e02c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811838}
{"contentHash":"d4d2bd21a9f2c6c5","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811844}
{"contentHash":"0a8ba8f1e33a8e08","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811845}
{"contentHash":"68b81df3157dd03b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811852}
{"contentHash":"5e580e00af70b27b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811851}
{"contentHash":"795936669cdaddbd","patternId":"aws-secret-key","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811755}
{"contentHash":"668934b86015ff5b","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811878}
{"contentHash":"982a390d9a9163e0","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811879}
{"contentHash":"a2d82c996b68fed7","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811881}
{"contentHash":"03435bff9ca7e8e3","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811880}
{"contentHash":"48c61620a6d1cb80","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811889}
{"contentHash":"2f8ffc953bf59b9c","patternId":"github-oauth-legacy","filePath":"..\\gitcaddy\\services\\gitdiff\\git_diff_tree_test.go","reason":"Manually ignored after review","addedAt":1769282811888}
{"contentHash":"42aa78d545dd6738","patternId":"private-key-pgp","filePath":"..\\gitcaddy\\tests\\integration\\private-testing.key","reason":"Manually ignored after review","addedAt":1769282955057}
{"contentHash":"db50f18b86135279","patternId":"pkcs12","filePath":"..\\gitcaddy\\options\\gitignore\\VisualStudio","reason":"Manually ignored after review","addedAt":1769283010531}
"content":" New Feature: Repository Home Page Tabs\n\n The repository home page now features a tabbed interface replacing the single README display. When content is available, users will see tabs for:\n\n - Readme - Displays the README file (default tab, existing behavior)\n - License - Displays the LICENSE file content\n - Gallery - Displays project screenshots from the .gallery folder\n\n Tabs only appear when the corresponding content exists in the repository.\n\n ---\n New Feature: Repository Gallery\n\n Developers can now showcase screenshots and images of their applications directly on the repository home page.\n\n Gallery Tab Features:\n - Responsive image grid layout\n - Lightbox viewer for full-size images with keyboard navigation (\u2190 \u2192)\n - Custom captions for each image\n - Lazy loading for better performance\n\n Gallery Settings Page (Repository \u003E Settings \u003E Gallery):\n - Upload images (PNG, JPG, JPEG, GIF, WebP, SVG, BMP, ICO)\n - 5MB maximum file size per image\n - Add/edit captions for each image\n - Delete images with confirmation\n\n Storage:\n - Images are stored in the .gallery folder at the repository root\n - Captions are stored in .gallery/gallery.json\n - All changes are committed to the repository automatically\n\n ---\n Localization\n\n Full translations added for gallery-related strings in 20\u002B languages:\n - English, German, French, Spanish, Italian, Dutch, Polish\n - Portuguese (Brazil \u0026 Portugal)\n - Russian, Ukrainian, Turkish, Czech, Greek, Hungarian\n - Finnish, Swedish\n - Japanese, Korean, Chinese (Simplified \u0026 Traditional)\n",
Online communities include people from many different backgrounds. The Gitea contributors are committed to providing a friendly, safe and welcoming environment for all, regardless of gender identity and expression, sexual orientation, disabilities, neurodiversity, physical appearance, body size, ethnicity, nationality, race, age, religion, or similar personal characteristics.
The first goal of the Code of Conduct is to specify a baseline standard of behavior so that people with different social values and communication styles can talk about Gitea effectively, productively, and respectfully.
The second goal is to provide a mechanism for resolving conflicts in the community when they arise.
The third goal of the Code of Conduct is to make our community welcoming to people from different backgrounds. Diversity is critical to the project; for Gitea to be successful, it needs contributors and users from all backgrounds.
We believe that healthy debate and disagreement are essential to a healthy project and community. However, it is never ok to be disrespectful. We value diverse opinions, but we value respectful behavior more.
## Community values
These are the values to which people in the Gitea community should aspire.
- **Be friendly and welcoming.**
- **Be patient.**
- Remember that people have varying communication styles and that not everyone is using their native language. (Meaning and tone can be lost in translation.)
- **Be thoughtful.**
- Productive communication requires effort. Think about how your words will be interpreted.
- Remember that sometimes it is best to refrain entirely from commenting.
- **Be respectful.**
- In particular, respect differences of opinion.
- **Be charitable.**
- Interpret the arguments of others in good faith, do not seek to disagree.
- When we do disagree, try to understand why.
- **Be constructive.**
- Avoid derailing: stay on topic; if you want to talk about something else, start a new conversation.
- Avoid unconstructive criticism: don't merely decry the current state of affairs; offer—or at least solicit—suggestions as to how things may be improved.
- Avoid discussing potentially offensive or sensitive issues; this all too often leads to unnecessary conflict.
- Avoid microaggressions (brief and commonplace verbal, behavioral and environmental indignities that communicate hostile, derogatory or negative slights and insults to a person or group).
- **Be responsible.**
- What you say and do matters. Take responsibility for your words and actions, including their consequences, whether intended or otherwise.
People are complicated. You should expect to be misunderstood and to misunderstand others; when this inevitably occurs, resist the urge to be defensive or assign blame. Try not to take offense where no offense was intended. Give people the benefit of the doubt. Even if the intent was to provoke, do not rise to it. It is the responsibility of all parties to de-escalate conflict when it arises.
## Code of Conduct
### Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
### Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others’ private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
### Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject: comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, as well as to ban (temporarily or permanently) any contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful.
### Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct also applies outside the project spaces when the Project Stewards have a reasonable belief that an individual’s behavior may have a negative impact on the project or its community.
### Conflict Resolution
We do not believe that all conflict is bad; healthy debate and disagreement often yield positive results. However, it is never okay to be disrespectful or to engage in behavior that violates the project’s code of conduct.
If you see someone violating the code of conduct, you are encouraged to address the behavior directly with those involved. Many issues can be resolved quickly and easily, and this gives people more control over the outcome of their dispute. If you are unable to resolve the matter for any reason, or if the behavior is threatening or harassing, report it. We are dedicated to providing an environment where participants feel welcome and safe.
Reports should be directed to the Gitea Project Stewards at conduct@gitea.com. It is the Project Stewards’ duty to receive and address reported violations of the code of conduct. They will then work with a committee consisting of representatives from the technical-oversight-committee.
We will investigate every complaint, but you may not receive a direct response. We will use our discretion in determining when and how to follow up on reported incidents, which may range from not taking action to permanent expulsion from the project and project-sponsored spaces. Under normal circumstances, we will notify the accused of the report and provide them an opportunity to discuss it before any action is taken. If there is a consensus between maintainers that such an endeavor would be useless (i.e. in case of an obvious spammer), we reserve the right to take action without notifying the accused first. The identity of the reporter will be omitted from the details of the report supplied to the accused. In potentially harmful situations, such as ongoing harassment or threats to anyone’s safety, we may take action without notice.
### Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
## Summary
- Treat everyone with respect and kindness.
- Be thoughtful in how you communicate.
- Don’t be destructive or inflammatory.
- If you encounter an issue, please mail conduct@gitea.com.
Sensitive security-related issues should be reported to
[security@gitea.io](mailto:security@gitea.io).
For configuring IDEs for Gitea development, see the [contributed IDE configurations](contrib/ide/).
For configuring IDE or code editor to develop Gitea see [IDE and code editor configuration](contrib/ide/)
## Issues
## Bug reports
### How to report issues
Please search the issues on the issue tracker with a variety of keywords
to ensure your bug is not already reported.
Please search the issues on the issue tracker with a variety of related keywords to ensure that your issue has not already been reported.
If unique, [open an issue](https://github.com/go-gitea/gitea/issues/new)
and answer the questions so we can understand and reproduce the
problematic behavior.
If your issue has not been reported yet, [open an issue](https://github.com/go-gitea/gitea/issues/new)
and answer the questions so we can understand and reproduce the problematic behavior. \
Please write clear and concise instructions so that we can reproduce the behavior — even if it seems obvious. \
The more detailed and specific you are, the faster we can fix the issue. \
It is really helpful if you can reproduce your problem on a site running on the latest commits, i.e. <https://demo.gitea.com>, as perhaps your problem has already been fixed on a current version. \
Please follow the guidelines described in [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) for your report.
To show us that the issue you are having is in Gitea itself, please
write clear, concise instructions so we can reproduce the behavior—
even if it seems obvious. The more detailed and specific you are,
the faster we can fix the issue. Check out [How to Report Bugs
Please be kind, remember that Gitea comes at no cost to you, and you're getting free help.
Please be kind, remember that Gitea comes at no cost to you, and you're
getting free help.
### Types of issues
## Discuss your design
Typically, issues fall in one of the following categories:
The project welcomes submissions. If you want to change or add something,
please let everyone know what you're working on—[file an issue](https://github.com/go-gitea/gitea/issues/new)!
Significant changes must go through the change proposal process
before they can be accepted. To create a proposal, file an issue with
your proposed changes documented, and make sure to note in the title
of the issue that it is a proposal.
-`bug`: Something in the frontend or backend behaves unexpectedly
-`security issue`: bug that has serious implications such as leaking another users data. Please do not file such issues on the public tracker and send a mail to security@gitea.io instead
-`feature`: Completely new functionality. You should describe this feature in enough detail that anyone who reads the issue can understand how it is supposed to be implemented
-`enhancement`: An existing feature should get an upgrade
-`refactoring`: Parts of the code base don't conform with other parts and should be changed to improve Gitea's maintainability
This process gives everyone a chance to validate the design, helps
prevent duplication of effort, and ensures that the idea fits inside
the goals for the project and tools. It also checks that the design is
sound before code is written; the code review tool is not the place for
high-level discussions.
### Discuss your design before the implementation
## Testing redux
We welcome submissions. \
If you want to change or add something, please let everyone know what you're working on — [file an issue](https://github.com/go-gitea/gitea/issues/new) or comment on an existing one before starting your work!
Before submitting a pull request, run all the tests for the whole tree
to make sure your changes don't cause regression elsewhere.
Significant changes such as new features must go through the change proposal process before they can be accepted. \
This is mainly to save yourself the trouble of implementing it, only to find out that your proposed implementation has some potential problems. \
Furthermore, this process gives everyone a chance to validate the design, helps prevent duplication of effort, and ensures that the idea fits inside
the goals for the project and tools.
Here's how to run the test suite:
Pull requests should not be the place for architecture discussions.
- Install the correct version of the drone-cli package. As of this
- Change into the base directory of your copy of the gitea repository,
and run `drone exec --local --build-event pull_request`.
### Issue locking
The drone version, command line, and disk requirements do change over
time (see [#4053](https://github.com/go-gitea/gitea/issues/4053) and
[#6243](https://github.com/go-gitea/gitea/issues/6243)); if you
discover any issues, please feel free to send us a pull request to
update these instructions.
Commenting on closed or merged issues/PRs is strongly discouraged.
Such comments will likely be overlooked as some maintainers may not view notifications on closed issues, thinking that the item is resolved.
As such, commenting on closed/merged issues/PRs may be disabled prior to the scheduled auto-locking if a discussion starts or if unrelated comments are posted.
If further discussion is needed, we encourage you to open a new issue instead and we recommend linking to the issue/PR in question for context.
## Vendoring
## Building Gitea
We keep a cached copy of dependencies within the `vendor/` directory,
managing updates via [dep](https://github.com/golang/dep).
See the [development setup instructions](https://docs.gitea.com/development/hacking-on-gitea).
Pull requests should only include `vendor/` updates if they are part of
the same change, be it a bugfix or a feature addition.
## Dependencies
### Backend
Go dependencies are managed using [Go Modules](https://go.dev/cmd/go/#hdr-Module_maintenance). \
You can find more details in the [go mod documentation](https://go.dev/ref/mod) and the [Go Modules Wiki](https://github.com/golang/go/wiki/Modules).
Pull requests should only modify `go.mod` and `go.sum` where it is related to your change, be it a bugfix or a new feature. \
Apart from that, these files should only be modified by Pull Requests whose only purpose is to update dependencies.
The `go.mod`, `go.sum` update needs to be justified as part of the PR description,
The `vendor/` update needs to be justified as part of the PR description,
and must be verified by the reviewers and/or merger to always reference
an existing upstream commit.
### Frontend
For the frontend, we use [npm](https://www.npmjs.com/).
The same restrictions apply for frontend dependencies as for backend dependencies, with the exceptions that the files for it are `package.json` and `package-lock.json`, and that new versions must always reference an existing version.
## Design guideline
Depending on your change, please read the
- [backend development guideline](https://docs.gitea.com/contributing/guidelines-backend)
- [frontend development guideline](https://docs.gitea.com/contributing/guidelines-frontend)
|``make test[\#SpecificTestName]`` | run unit test(s) | |
|``make test-sqlite[\#SpecificTestName]`` | run [integration](tests/integration) test(s) for SQLite | [More details](tests/integration/README.md) |
|``make test-e2e-sqlite[\#SpecificTestName]`` | run [end-to-end](tests/e2e) test(s) for SQLite | [More details](tests/e2e/README.md) |
You can find more information on how to get started with it on the [dep project website](https://golang.github.io/dep/docs/introduction.html).
## Translation
All translation work happens on [Crowdin](https://translate.gitea.com).
The only translation that is maintained in this repository is [the English translation](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini).
It is synced regularly with Crowdin. \
Other locales on main branch **should not** be updated manually as they will be overwritten with each sync. \
Once a language has reached a **satisfactory percentage** of translated keys (~25%), it will be synced back into this repo and included in the next released version.
We do all translation work inside [Crowdin](https://crowdin.com/project/gitea).
The only translation that is maintained in this git repository is
and is synced regularly to Crowdin. Once a translation has reached
A SATISFACTORY PERCENTAGE it will be synced back into this repo and
included in the next released version.
The tool `go run build/backport-locale.go` can be used to backport locales from the main branch to release branches that were missed.
## Building Gitea
Generally, the go build tools are installed as-needed in the `Makefile`.
An exception are the tools to build the CSS and images.
- To build CSS: Install [Node.js](https://nodejs.org/en/download/package-manager) at version 8.0 or above
with `npm` and then run `npm install` and `make generate-stylesheets`.
- To build Images: ImageMagick, inkscape and zopflipng binaries must be
available in your `PATH` to run `make generate-images`.
## Code review
### Pull request format
Changes to Gitea must be reviewed before they are accepted—no matter who
makes the change, even if they are an owner or a maintainer. We use GitHub's
pull request workflow to do that. And, we also use [LGTM](http://lgtm.co)
to ensure every PR is reviewed by at least 2 maintainers.
Please try to make your pull request easy to review for us. \
For that, please read the [*Best Practices for Faster Reviews*](https://github.com/kubernetes/community/blob/261cb0fd089b64002c91e8eddceebf032462ccd6/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) guide. \
It has lots of useful tips for any project you may want to contribute to. \
Please try to make your pull request easy to review for us. And, please read
the *[How to get faster PR reviews](https://github.com/kubernetes/community/blob/261cb0fd089b64002c91e8eddceebf032462ccd6/contributors/guide/pull-requests.md#best-practices-for-faster-reviews)* guide;
it has lots of useful tips for any project you may want to contribute.
Some of the key points:
- Make small pull requests. \
The smaller, the faster to review and the more likely it will be merged soon.
- Don't make changes unrelated to your PR. \
Maybe there are typos on some comments, maybe refactoring would be welcome on a function... \
but if that is not related to your PR, please make *another* PR for that.
- Split big pull requests into multiple small ones. \
An incremental change will be faster to review than a huge PR.
- Allow edits by maintainers. This way, the maintainers will take care of merging the PR later on instead of you.
* Make small pull requests. The smaller, the faster to review and the
more likely it will be merged soon.
* Don't make changes unrelated to your PR. Maybe there are typos on
some comments, maybe refactoring would be welcome on a function... but
if that is not related to your PR, please make *another* PR for that.
* Split big pull requests into multiple small ones. An incremental change
will be faster to review than a huge PR.
### PR title and summary
## Styleguide
In the PR title, describe the problem you are fixing, not how you are fixing it. \
Use the first comment as a summary of your PR. \
In the PR summary, you can describe exactly how you are fixing this problem.
For imports you should use the following format (_without_ the comments)
```go
import(
// stdlib
"encoding/json"
"fmt"
Keep this summary up-to-date as the PR evolves. \
If your PR changes the UI, you must add **after** screenshots in the PR summary. \
If you are not implementing a new feature, you should also post **before** screenshots for comparison.
// local packages
"code.gitea.io/gitea/models"
"code.gitea.io/sdk/gitea"
If you are implementing a new feature, your PR will only be merged if your screenshots are up to date.\
Furthermore, feature PRs will only be merged if their summary contains a clear usage description (understandable for users) and testing description (understandable for reviewers).
You should strive to combine both into a single description.
Another requirement for merging PRs is that the PR is labeled correctly.\
However, this is not your job as a contributor, but the job of the person merging your PR.\
If you think that your PR was labeled incorrectly, or notice that it was merged without labels, please let us know.
If your PR closes some issues, you must note that in a way that both GitHub and Gitea understand, i.e. by appending a paragraph like
```text
Fixes/Closes/Resolves #<ISSUE_NR_X>.
Fixes/Closes/Resolves #<ISSUE_NR_Y>.
// external packages
"github.com/foo/bar"
"gopkg.io/baz.v1"
)
```
to your summary. \
Each issue that will be closed must stand on a separate line.
## Sign-off your work
### Milestone
A PR should only be assigned to a milestone if it will likely be merged into the given version. \
As a rule of thumb, assume that a PR will stay open for an additional month for every 100 added lines. \
PRs without a milestone may not be merged.
### Labels
Almost all labels used inside Gitea can be classified as one of the following:
- `modifies/…`: Determines which parts of the codebase are affected. These labels will be set through the CI.
- `topic/…`: Determines the conceptual component of Gitea that is affected, i.e. issues, projects, or authentication. At best, PRs should only target one component but there might be overlap. Must be set manually.
- `type/…`: Determines the type of an issue or PR (feature, refactoring, docs, bug, …). If GitHub supported scoped labels, these labels would be exclusive, so you should set **exactly** one, not more or less (every PR should fall into one of the provided categories, and only one).
- `issue/…` / `pr/…`: Labels that are specific to issues or PRs respectively and that are only necessary in a given context, i.e. `issue/not-a-bug` or `pr/need-2-approvals`
Every PR should be labeled correctly with every label that applies.
There are also some labels that will be managed automatically.\
In particular, these are
- the amount of pending required approvals
- has all `backport`s or needs a manual backport
### Breaking PRs
#### What is a breaking PR?
A PR is breaking if it meets one of the following criteria:
- It changes API output in an incompatible way for existing users
- It removes a setting that an admin could previously set (i.e. via `app.ini`)
- An admin must do something manually to restore the old behavior
In particular, this means that adding new settings is not breaking.\
Changing the default value of a setting or replacing the setting with another one is breaking, however.
#### How to handle breaking PRs?
If your PR has a breaking change, you must add two things to the summary of your PR:
1. A reasoning why this breaking change is necessary
2. A `BREAKING` section explaining in simple terms (understandable for a typical user) how this PR affects users and how to mitigate these changes. This section can look for example like
```md
## :warning: BREAKING :warning:
```
Breaking PRs will not be merged as long as not both of these requirements are met.
### Maintaining open PRs
The moment you create a non-draft PR or the moment you convert a draft PR to a non-draft PR is the moment code review starts for it. \
Once that happens, do not rebase or squash your branch anymore as it makes it difficult to review the new changes. \
Merge the base branch into your branch only when you really need to, i.e. because of conflicting changes in the mean time. \
This reduces unnecessary CI runs. \
Don't worry about merge commits messing up your commit history as every PR will be squash merged. \
This means that all changes are joined into a single new commit whose message is as described below.
### Getting PRs merged
Changes to Gitea must be reviewed before they are accepted — no matter who
makes the change, even if they are an owner or a maintainer. \
The only exception are critical bugs that prevent Gitea from being compiled or started. \
Specifically, we require two approvals from maintainers for every PR. \
Once this criteria has been met, your PR receives the `lgtm/done` label. \
From this point on, your only responsibility is to fix merge conflicts or respond to/implement requests by maintainers. \
It is the responsibility of the maintainers from this point to get your PR merged.
If a PR has the `lgtm/done` label and there are no open discussions or merge conflicts anymore, any maintainer can add the `reviewed/wait-merge` label. \
This label means that the PR is part of the merge queue and will be merged as soon as possible. \
The merge queue will be cleared in the order of the list below:
Gitea uses it's own tool, the <https://github.com/GiteaBot/gitea-backporter> to automate parts of the review process. \
This tool does the things listed below automatically:
- create a backport PR if needed once the initial PR was merged
- remove the PR from the merge queue after the PR merged
- keep the oldest branch in the merge queue up to date with merges
### Final call
If a PR has been ignored for more than 7 days with no comments or reviews, and the author or any maintainer believes it will not survive a long wait (such as a refactoring PR), they can send "final call" to the TOC by mentioning them in a comment.
After another 7 days, if there is still zero approval, this is considered a polite refusal, and the PR will be closed to avoid wasting further time. Therefore, the "final call" has a cost, and should be used cautiously.
However, if there are no objections from maintainers, the PR can be merged with only one approval from the TOC (not the author).
### Commit messages
Mergers are able and required to rewrite the PR title and summary (the first comment of a PR) so that it can produce an easily understandable commit message if necessary. \
The final commit message should no longer contain any uncertainty such as `hopefully, <x> won't happen anymore`. Replace uncertainty with certainty.
#### PR Co-authors
A person counts as a PR co-author the moment they (co-)authored a commit that is not simply a `Merge base branch into branch` commit. \
Mergers are required to remove such "false-positive" co-authors when writing the commit message. \
The true co-authors must remain in the commit message.
#### PRs targeting `main`
The commit message of PRs targeting `main` is always
If you add a new feature or change an existing aspect of Gitea, the documentation for that feature must be created or updated in another PR at [https://gitea.com/gitea/docs](https://gitea.com/gitea/docs).
**The docs directory on main repository will be removed at some time. We will have a yaml file to store configuration file's meta data. After that completed, configuration documentation should be in the main repository.**
## API v1
The API is documented by [swagger](https://gitea.com/api/swagger) and is based on [the GitHub API](https://docs.github.com/en/rest).
### GitHub API compatibility
Gitea's API should use the same endpoints and fields as the GitHub API as far as possible, unless there are good reasons to deviate. \
If Gitea provides functionality that GitHub does not, a new endpoint can be created. \
If information is provided by Gitea that is not provided by the GitHub API, a new field can be used that doesn't collide with any GitHub fields. \
Updating an existing API should not remove existing fields unless there is a really good reason to do so. \
The same applies to status responses. If you notice a problem, feel free to leave a comment in the code for future refactoring to API v2 (which is currently not planned).
### Adding/Maintaining API routes
All expected results (errors, success, fail messages) must be documented ([example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/routers/api/v1/repo/issue.go#L319-L327)). \
All JSON input types must be defined as a struct in [modules/structs/](modules/structs/) ([example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/modules/structs/issue.go#L76-L91)) \
and referenced in [routers/api/v1/swagger/options.go](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/routers/api/v1/swagger/options.go). \
They can then be used like [this example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/routers/api/v1/repo/issue.go#L318). \
All JSON responses must be defined as a struct in [modules/structs/](modules/structs/) ([example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/modules/structs/issue.go#L36-L68)) \
and referenced in its category in [routers/api/v1/swagger/](routers/api/v1/swagger/) ([example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/routers/api/v1/swagger/issue.go#L11-L16)) \
They can be used like [this example](https://github.com/go-gitea/gitea/blob/c620eb5b2d0d874da68ebd734d3864c5224f71f7/routers/api/v1/repo/issue.go#L277-L279).
### When to use what HTTP method
In general, HTTP methods are chosen as follows:
- **GET** endpoints return the requested object(s) and status **OK (200)**
- **DELETE** endpoints return the status **No Content (204)** and no content either
- **POST** endpoints are used to **create** new objects (e.g. a User) and return the status **Created (201)** and the created object
- **PUT** endpoints are used to **add/assign** existing Objects (e.g. a user to a team) and return the status **No Content (204)** and no content either
- **PATCH** endpoints are used to **edit/change** an existing object and return the changed object and the status **OK (200)**
### Requirements for API routes
All parameters of endpoints changing/editing an object must be optional (except the ones to identify the object, which are required).
Endpoints returning lists must
- support pagination (`page` & `limit` options in query)
- set `X-Total-Count` header via **SetTotalCountHeader** ([example](https://github.com/go-gitea/gitea/blob/7aae98cc5d4113f1e9918b7ee7dd09f67c189e3e/routers/api/v1/repo/issue.go#L444))
## Backports and Frontports
### What is backported?
We backport PRs given the following circumstances:
1. Feature freeze is active, but `<version>-rc0` has not been released yet. Here, we backport as much as possible. <!-- TODO: Is that our definition with the new backport bot? -->
2. `rc0` has been released. Here, we only backport bug- and security-fixes, and small enhancements. Large PRs such as refactors are not backported anymore. <!-- TODO: Is that our definition with the new backport bot? -->
3. We never backport new features.
4. We never backport breaking changes except when
1. The breaking change has no effect on the vast majority of users
2. The component triggering the breaking change is marked as experimental
### How to backport?
In the past, it was necessary to manually backport your PRs. \
Now, that's not a requirement anymore as our [backport bot](https://github.com/GiteaBot) tries to create backports automatically once the PR is merged when the PR
- does not have the label `backport/manual`
- has the label `backport/<version>`
The `backport/manual` label signifies either that you want to backport the change yourself, or that there were conflicts when backporting, thus you **must** do it yourself.
### Format of backport PRs
The title of backport PRs should be
```
<original PR title> (#<original pr number>)
```
The first two lines of the summary of the backporting PR should be
```
Backport #<original pr number>
```
with the rest of the summary and labels matching the original PR.
### Frontports
Frontports behave exactly as described above for backports.
## Developer Certificate of Origin (DCO)
We consider the act of contributing to the code by submitting a Pull Request as the "Sign off" or agreement to the certifications and terms of the [DCO](DCO) and [MIT license](LICENSE). \
No further action is required. \
You can also decide to sign off your commits by adding the following line at the end of your commit messages:
The sign-off is a simple line at the end of the explanation for the
patch. Your signature certifies that you wrote the patch or otherwise
have the right to pass it on as an open-source patch. The rules are
pretty simple: If you can certify [DCO](DCO), then you just add a line
to every git commit message:
```
Signed-off-by: Joe Smith <joe.smith@email.com>
```
If you set the `user.name` and `user.email` Git config options, you can add the line to the end of your commits automatically with `git commit -s`.
We assume in good faith that the information you provide is legally binding.
Please use your real name; we really dislike pseudonyms or anonymous
contributions. We are in the open-source world without secrets. If you
set your `user.name` and `user.email` git configs, you can sign-off your
commit automatically with `git commit -s`.
## Release Cycle
We adopted a release schedule to streamline the process of working on, finishing, and issuing releases. \
The overall goal is to make a major release every three or four months, which breaks down into two or three months of general development followed by one month of testing and polishing known as the release freeze. \
All the feature pull requests should be
merged before feature freeze. All feature pull requests haven't been merged before this feature freeze will be moved to next milestone, please notice our feature freeze announcement on discord. And, during the frozen period, a corresponding
release branch is open for fixes backported from main branch. Release candidates
are made during this period for user testing to
obtain a final version that is maintained in this branch.
We adopted a release schedule to streamline the process of working
on, finishing, and issuing releases. The overall goal is to make a
minor release every two months, which breaks down into one month of
general development followed by one month of testing and polishing
known as the release freeze. All the feature pull requests should be
merged in the first month of one release period. And, during the frozen
period, a corresponding release branch is open for fixes backported from
master. Release candidates are made during this period for user testing to
obtain a final version that is maintained in this branch. A release is
maintained by issuing patch releases to only correct critical problems
such as crashes or security issues.
Major release cycles are bimonthly. They always begin on the 25th and end on
the 24th (i.e., the 25th of December to February 24th).
During a development cycle, we may also publish any necessary minor releases
for the previous version. For example, if the latest, published release is
@@ -477,12 +198,13 @@ still possible.
## Maintainers
To make sure every PR is checked, we have [maintainers](MAINTAINERS). \
Every PR **must** be reviewed by at least two maintainers (or owners) before it can get merged. \
For refactoring PRs after a week and documentation only PRs, the approval of only one maintainer is enough. \
A maintainer should be a contributor of Gitea and contributed at least
To make sure every PR is checked, we have [team
maintainers](MAINTAINERS). Every PR **MUST** be reviewed by at least
two maintainers (or owners) before it can get merged. A maintainer
should be a contributor of Gitea (or Gogs) and contributed at least
4 accepted PRs. A contributor should apply as a maintainer in the
[Discord](https://discord.gg/Gitea) `#develop` channel. The team maintainers may invite the contributor. A maintainer
[Discord](https://discord.gg/NsatcWJ) #develop channel. The owners
or the team maintainers may invite the contributor. A maintainer
should spend some time on code reviews. If a maintainer has no
time to do that, they should apply to leave the maintainers team
and we will give them the honor of being a member of the [advisors
@@ -492,115 +214,88 @@ to the maintainers team. If a maintainer is inactive for more than 3
months and forgets to leave the maintainers team, the owners may move
him or her from the maintainers team to the advisors team.
For security reasons, Maintainers should use 2FA for their accounts and
After the election, the new owners should proactively agree
with our [CONTRIBUTING](CONTRIBUTING.md) requirements in the
[Discord](https://discord.gg/NsatcWJ) #general channel. Below are the
words to speak:
At the start of 2023, the `Owners` team was dissolved. Instead, the governance charter proposed a technical oversight committee (TOC) which expands the ownership team of the Gitea project from three elected positions to six positions. Three positions are elected as it has been over the past years, and the other three consist of appointed members from the Gitea company.
https://blog.gitea.com/quarterly-23q1/
```
I'm honored to having been elected an owner of Gitea, I agree with
[CONTRIBUTING](CONTRIBUTING.md). I will spend part of my time on Gitea
and lead the development of Gitea.
```
### TOC election process
To honor the past owners, here's the history of the owners and the time
they served:
Any maintainer is eligible to be part of the community TOC if they are not associated with the Gitea company.
A maintainer can either nominate themselves, or can be nominated by other maintainers to be a candidate for the TOC election.
If you are nominated by someone else, you must first accept your nomination before the vote starts to be a candidate.
If an elected member that accepts the seat does not have 2FA configured yet, they will be temporarily counted as `answer pending` until they manage to configure 2FA, thus leaving their seat empty for this duration.
Each member of the community elected TOC will be granted $500 each month as compensation for their work.
Furthermore, any community release manager for a specific release or LTS will be compensated $500 for the delivery of said release.
These funds will come from community sources like the OpenCollective rather than directly from the company.
Only non-company members are eligible for this compensation, and if a member of the community TOC takes the responsibility of release manager, they would only be compensated for their TOC duties.
Gitea Ltd employees are not eligible to receive any funds from the OpenCollective unless it is reimbursement for a purchase made for the Gitea project itself.
## TOC & Working groups
With Gitea covering many projects outside of the main repository, several groups will be created to help focus on specific areas instead of requiring maintainers to be a jack-of-all-trades. Maintainers are of course more than welcome to be part of multiple groups should they wish to contribute in multiple places.
The currently proposed groups are:
- **Core Group**: maintain the primary Gitea repository
- **Integration Group**: maintain the Gitea ecosystem's related tools, including go-sdk/tea/changelog/bots etc.
- **Documentation Group**: maintain related documents and repositories
- **Translation Group**: coordinate with translators and maintain translations
- **Security Group**: managed by TOC directly, members are decided by TOC, maintains security patches/responsible for security items
## Roadmap
Each year a roadmap will be discussed with the entire Gitea maintainers team, and feedback will be solicited from various stakeholders.
TOC members need to review the roadmap every year and work together on the direction of the project.
When a vote is required for a proposal or other change, the vote of community elected TOC members count slightly more than the vote of company elected TOC members. With this approach, we both avoid ties and ensure that changes align with the mission statement and community opinion.
Gitea has the `main` branch as a tip branch and has version branches
such as `release/v1.19`. `release/v1.19` is a release branch and we will
tag `v1.19.0` for binary download. If `v1.19.0` has bugs, we will accept
pull requests on the `release/v1.19` branch and publish a `v1.19.1` tag,
after bringing the bug fix also to the main branch.
Gitea has the `master` branch as a tip branch and has version branches
such as `release/v0.9`. `release/v0.9` is a release branch and we will
tag `v0.9.0` for binary download. If `v0.9.0` has bugs, we will accept
pull requests on the `release/v0.9` branch and publish a `v0.9.1` tag,
after bringing the bug fix also to the master branch.
Since the `main` branch is a tip version, if you wish to use Gitea
Since the `master` branch is a tip version, if you wish to use Gitea
in production, please download the latest release tag version. All the
branches will be protected via GitHub, all the PRs to every branch must
be reviewed by two maintainers and must pass the automatic tests.
## Releasing Gitea
- Let $vmaj, $vmin and $vpat be Major, Minor and Patch version numbers, $vpat should be rc1, rc2, 0, 1, ...... $vmaj.$vmin will be kept the same as milestones on github or gitea in future.
- Before releasing, confirm all the version's milestone issues or PRs has been resolved. Then discuss the release on Discord channel #maintainers and get agreed with almost all the owners and mergers. Or you can declare the version and if nobody is against it in about several hours.
- If this is a big version first you have to create PR for changelog on branch `main` with PRs with label `changelog` and after it has been merged do following steps:
- Create `-dev` tag as `git tag -s -F release.notes v$vmaj.$vmin.0-dev` and push the tag as `git push origin v$vmaj.$vmin.0-dev`.
- When CI has finished building tag then you have to create a new branch named `release/v$vmaj.$vmin`
- If it is bugfix version create PR for changelog on branch `release/v$vmaj.$vmin` and wait till it is reviewed and merged.
- Add a tag as `git tag -s -F release.notes v$vmaj.$vmin.$`, release.notes file could be a temporary file to only include the changelog this version which you added to `CHANGELOG.md`.
- And then push the tag as `git push origin v$vmaj.$vmin.$`. Drone CI will automatically create a release and upload all the compiled binary. (But currently it doesn't add the release notes automatically. Maybe we should fix that.)
- If needed send a frontport PR for the changelog to branch `main` and update the version in `docs/config.yaml` to refer to the new version.
- Send PR to [blog repository](https://gitea.com/gitea/blog) announcing the release.
- Verify all release assets were correctly published through CI on dl.gitea.com and GitHub releases. Once ACKed:
- bump the version of https://dl.gitea.com/gitea/version.json
- merge the blog post PR
- announce the release in discord `#announcements`
* Let $vmaj, $vmin and $vpat be Major, Minor and Patch version numbers, $vpat should be rc1, rc2, 0, 1, ...... $vmaj.$vmin will be kept the same as milestones on github or gitea in future.
* Before releasing, confirm all the version's milestone issues or PRs has been resolved. Then discuss the release on discord channel #maintainers and get agreed with almost all the owners and mergers. Or you can declare the version and if nobody against in about serval hours.
* If this is a big version first you have to create PR for changelog on branch `master` with PRs with label `changelog` and after it has been merged do following steps:
* Create `-dev` tag as `git tag -s -F release.notes v$vmaj.$vmin.0-dev` and push the tag as `git push origin v$vmaj.$vmin.0-dev`.
* When CI has finished building tag then you have to create a new branch named `release/v$vmaj.$vmin`
* If it is bugfix version create PR for changelog on branch `release/v$vmaj.$vmin` and wait till it is reviewed and merged.
* Add a tag as `git tag -s -F release.notes v$vmaj.$vmin.$`, release.notes file could be a temporary file to only include the changelog this version which you added to `CHANGELOG.md`.
* And then push the tag as `git push origin v$vmaj.$vmin.$`. Drone CI will automatically created a release and upload all the compiled binary. (But currently it didn't add the release notes automatically. Maybe we should fix that.)
* If needed send PR for changelog on branch `master`.
* Send PR to [blog repository](https://github.com/go-gitea/blog) announcing the release.
## Copyright
Code that you contribute should use the standard copyright header:
```
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
```
Files in the repository contain copyright from the year they are added
to the year they are last changed. If the copyright author is changed,
# Use COPY but not "mount" because some directories like "node_modules" contain platform-depended contents and these directories need to be ignored.
# ".git" directory will be mounted later separately for getting version data.
# TODO: in the future, maybe we can pre-build the frontend assets on one platform and share them for different platforms, the benefit is that it won't be affected by webpack plugin compatibility problems, then the working directory can be fully mounted and the COPY is not needed.
COPY --exclude=.git/ . .
#Setup repo
COPY . ${GOPATH}/src/code.gitea.io/gitea
WORKDIR${GOPATH}/src/code.gitea.io/gitea
# Build gitea, .git mount is required for version data
This guide explains how to build external plugins for GitCaddy. Plugins are standalone services that communicate with the server over gRPC (HTTP/2) using a well-defined protocol.
A GitCaddy plugin is any process that implements the `PluginService` gRPC interface. The server connects to the plugin on startup, calls `Initialize` to get its manifest, and then:
- **Health checks** the plugin periodically (default: every 30 seconds)
- **Dispatches events** the plugin has subscribed to (e.g., `license:updated`)
- **Proxies HTTP requests** to routes the plugin has declared
- **Shuts down** the plugin gracefully when the server stops
Plugins can run in two modes:
- **External mode** - The plugin runs independently (Docker, systemd, etc.). The server connects to it.
- **Managed mode** - The server launches the plugin binary and manages its process lifecycle.
## Protocol
The protocol is defined in [`modules/plugins/pluginv1/plugin.proto`](modules/plugins/pluginv1/plugin.proto).
Routes declare which HTTP paths your plugin handles. When the server receives a request matching a plugin's route, it proxies the request via `HandleHTTP`.
```protobuf
messagePluginRoute{
stringmethod=1;// "GET", "POST", etc.
stringpath=2;// "/api/v1/my-plugin/endpoint"
stringdescription=3;
}
```
Route matching uses prefix matching: a declared path of `/api/v1/analytics` will match `/api/v1/analytics/events`.
### Events
Subscribe to server events by listing them in `subscribed_events`. Use `"*"` to subscribe to all events.
Available events include:
-`license:updated` - License key changed
-`repo:push` - Code pushed to a repository
-`repo:created` - New repository created
-`issue:created` - New issue opened
-`issue:comment` - Comment added to an issue
-`pull_request:opened` - New pull request opened
-`pull_request:merged` - Pull request merged
Events are dispatched asynchronously (fire-and-forget) with a 30-second timeout per plugin.
### Permissions
The `required_permissions` field declares what server resources your plugin needs access to. The server logs these at startup for admin review.
## Health Monitoring
The server health-checks every registered plugin at a configurable interval (default: 30 seconds).
When a previously offline plugin responds to a health check, it is marked **online** and an info log is emitted.
If `HealthCheckResponse.healthy` is `false` (the RPC succeeds but the plugin reports unhealthy), the plugin is marked as **error** status. This allows plugins to report degraded operation (e.g., missing API key, expired license) without being treated as crashed.
**Health check timeout** is configured per-plugin via `HEALTH_TIMEOUT` (default: 5 seconds).
## Protocol Versioning
The plugin protocol uses explicit version negotiation to ensure forward compatibility. Both the server and plugin exchange their supported protocol version during `Initialize`:
1. The server sends `protocol_version = 1` in `InitializeRequest`
2. The plugin returns `protocol_version = 1` in `InitializeResponse`
3. The server stores the plugin's version and checks it before calling any RPCs added in later versions
**What this means for plugin developers:**
- **You don't need to recompile** when the server adds new fields to existing messages. Protobuf handles this automatically — unknown fields are ignored, missing fields use zero-value defaults.
- **You don't need to recompile** when the server adds new event types. Your plugin only receives events it subscribed to.
- **You only need to update** if you want to use features from a newer protocol version (e.g., new RPCs added in protocol v2).
**Pre-versioning plugins** (those that don't set `protocol_version` in their response) return `0`, which the server treats as version `1`. This means all existing plugins are compatible without changes.
## Configuration
Plugins are configured in the server's `app.ini`.
### External Mode
The plugin runs independently. The server connects to its gRPC endpoint.
```ini
[plugins]
ENABLED=true
HEALTH_CHECK_INTERVAL=30s
[plugins.my-plugin]
ENABLED=true
ADDRESS=localhost:9090
HEALTH_TIMEOUT=5s
SUBSCRIBED_EVENTS=repo:push, issue:created
```
### Managed Mode
The server launches the plugin binary and manages its lifecycle. If the plugin crashes, the server restarts it automatically.
```ini
[plugins.my-plugin]
ENABLED=true
BINARY=/opt/plugins/my-plugin
ARGS=--port 9090 --log-level info
ADDRESS=localhost:9090
HEALTH_TIMEOUT=5s
```
When `BINARY` is set, the server:
1. Starts the process with the specified arguments
2. Waits 2 seconds for the process to initialize
3. Calls `Initialize` via gRPC
4. Sends `SIGINT` on server shutdown
5. Auto-restarts the process if health checks fail 3 consecutive times
### Configuration Reference
#### `[plugins]` Section
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| `ENABLED` | bool | `true` | Master switch for the plugin framework |
| `PATH` | string | `data/plugins` | Directory for plugin data |
| `HEALTH_CHECK_INTERVAL` | duration | `30s` | How often to health-check plugins |
#### `[plugins.<name>]` Section
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| `ENABLED` | bool | `true` | Whether this plugin is active |
A plugin must have either `BINARY` or `ADDRESS` (or both for managed mode). Entries with neither are skipped with a warning.
## Transport
Plugins communicate over **cleartext HTTP/2 (h2c)** by default. The server uses the gRPC wire protocol via [Connect RPC](https://connectrpc.com/).
**Requirements for your plugin's gRPC server:**
- Listen on a TCP port
- Support HTTP/2 (standard for any gRPC server)
- No TLS required for local communication (h2c)
The server constructs its gRPC client with `connect.WithGRPC()`, which uses the standard gRPC binary protocol. This means your plugin can use **any** gRPC server implementation:
| Language | gRPC Library |
|----------|-------------|
| Go | `google.golang.org/grpc` or `connectrpc.com/connect` |
[](https://discord.gg/NsatcWJ)
[](https://microbadger.com/images/gitea/gitea "Get your own image badge on microbadger.com")
[](https://opencollective.com/gitea)
## 目标
Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC。
Usage:"Minimal cell width including any padding for the formatted table",
Value:0,
},
&cli.IntFlag{
Name:"tab-width",
Usage:"width of tab characters in formatted table (equivalent number of spaces)",
Value:8,
},
&cli.IntFlag{
Name:"padding",
Usage:"padding added to a cell before computing its width",
Value:1,
},
&cli.StringFlag{
Name:"pad-char",
Usage:`ASCII char used for padding if padchar == '\\t', the Writer will assume that the width of a '\\t' in the formatted output is tabwidth, and cells are left-aligned independent of align_left (for correct-looking results, tabwidth must correspond to the tab width in the viewer displaying the result)`,
Value:"\t",
},
&cli.BoolFlag{
Name:"vertical-bars",
Usage:"Set to true to print vertical bars between columns",
returnfmt.Errorf("password is not long enough, needs to be at least %d characters",setting.MinPasswordLength)
caseerrors.Is(err,password.ErrComplexity):
returnerrors.New("password does not meet complexity requirements")
caseerrors.Is(err,password.ErrIsPwned):
returnerrors.New("the password is in a list of stolen passwords previously exposed in public data breaches, please try again with a different password, to see more details: https://haveibeenpwned.com/Passwords")
default:
returnerr
}
}
fmt.Printf("%s's password has been successfully updated!\n",user.Name)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.