-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: git plugin - option to limit depth of historical scans #118
feat: git plugin - option to limit depth of historical scans #118
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please see comments below
plugins/git.go
Outdated
func (p *GitPlugin) buildScanOptions() string { | ||
options := "" | ||
if p.Depth > 0 { | ||
options = fmt.Sprintf("--full-history --all -n %d", p.Depth) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
options = fmt.Sprintf("--full-history --all -n %d", p.Depth) | |
options = fmt.Sprintf("-n %d", p.Depth) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
only to scan current checked-out branch. can you explain --full-history
in this context?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
by default, gitleaks
GitLog
function scans using--full-history
and--all
options (see: https://github.com/gitleaks/gitleaks/blob/master/detect/git/git.go#L44). The reason these options are embedded inbuildScanOptions
is to maintain this behavior
From the PR description
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
additional info:
https://www.git-scm.com/docs/git-log#Documentation/git-log.txt-Defaultmode history is pruned without --full-history option
I think it makes sense to make --all
optional for all usages of this plugin, it will be more consistent and less confusing from the user's perspective.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, thanks for the info. I'm okay with --full-history
regarding --all
:
we can have our own version of --all
/ --all-branches
optional arg which will include all commits from all branches.
by default (if not provided) - without --all
= only the currently checked-out branch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- made
--all
optional and updatedbuildScanOptions
function - added
scanAllBranches
boolean field toGitPlugin
struct - limited the scope of
Depth
field inGitPlugin
struct by changing it todepth
…cdsv/2ms into git-plugin-limit-depth-of-scan
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very good, one more step and we will be there!
plugins/git.go
Outdated
|
||
"github.com/gitleaks/go-gitdiff/gitdiff" | ||
"github.com/rs/zerolog/log" | ||
"github.com/spf13/cobra" | ||
"github.com/zricethezav/gitleaks/v8/detect/git" | ||
) | ||
|
||
const ( | ||
argDepth = "depth" | ||
argScanAllBranches = "all" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please call it all-branches
, otherwise it is not clear all- what?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
plugins/git.go
Outdated
}, | ||
} | ||
|
||
flags := command.Flags() | ||
flags.BoolVar(&p.scanAllBranches, argScanAllBranches, false, "scan all branches") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it will print default: false
in the help
message?
If not, please add [default: false]
to the end of the description.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
Co-authored-by: Baruch Odem (Rothkoff) <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Closes #94
depth
field to theGitPlugin
structdepth
option to the git plugin commandbuildScanOptions
to generate a string of scanning options for the gitleaksGitLog
functionGitLog
function scans using--full-history
and--all
options (see: https://github.com/gitleaks/gitleaks/blob/master/detect/git/git.go#L44). The reason these options are embedded inbuildScanOptions
is to maintain this behaviorProposed Changes
--depth <number>
option to git plugin commandAdditional Considerations
GitLog
--all
option scans the entire repo (including all branches). users may prefer to scan only a specific branch instead of the entire repository.I submit this contribution under the Apache-2.0 license.