in internal/core/system.go [205:255]
func runWithFullHistory(ctx context.Context, c corescan.Context, startHash string) int {
remoteUrl, err := git.RemoteUrl(c.RepositoryRoot(), c.LogDir())
if err != nil {
log.Fatal(err)
}
branch, err := git.Branch(c.RepositoryRoot(), c.LogDir())
if err != nil {
log.Fatal(err)
}
if remoteUrl == "" && branch == "" {
log.Fatal("Please check that project is located within the Git repo. If you specified --repository-root option, check that it points to the right directory.")
}
err = git.Clean(c.RepositoryRoot(), c.LogDir())
if err != nil {
log.Fatal(err)
}
revisions := git.Revisions(c.RepositoryRoot())
allCommits := len(revisions)
counter := 0
var exitCode int
if startHash != "" {
for i, revision := range revisions {
counter++
if revision == startHash {
revisions = revisions[i:]
break
}
}
}
for _, revision := range revisions {
counter++
msg.WarningMessage("[%d/%d] Running analysis for revision %s", counter+1, allCommits, revision)
err = git.CheckoutAndUpdateSubmodule(c.RepositoryRoot(), revision, true, c.LogDir())
if err != nil {
log.Fatal(err)
}
msg.EmptyMessage()
contextForAnalysis := c.WithVcsEnvForFullHistoryAnalysisIteration(remoteUrl, branch, revision)
exitCode = runQodana(ctx, contextForAnalysis)
}
err = git.CheckoutAndUpdateSubmodule(c.RepositoryRoot(), branch, true, c.LogDir())
if err != nil {
log.Fatal(err)
}
return exitCode
}