-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # 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
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.