-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Add doctor command to write commit-graphs #20007
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
Changes from 1 commit
b130407
1dd2570
56cd7d2
6b0a5b6
6408bbe
9b5175d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -189,6 +189,73 @@ func checkDaemonExport(ctx context.Context, logger log.Logger, autofix bool) err | |
return nil | ||
} | ||
|
||
func checkCommitGraph(ctx context.Context, logger log.Logger, autofix bool) error { | ||
git.InitOnceWithSync(ctx) | ||
|
||
numRepos := 0 | ||
numNeedUpdate := 0 | ||
numWritten := 0 | ||
if err := iterateRepositories(ctx, func(repo *repo_model.Repository) error { | ||
numRepos++ | ||
|
||
commitGraphExists := func() (bool, error) { | ||
// Check commit-graph exists | ||
commitGraphFile := path.Join(repo.RepoPath(), `objects/info/commit-graph`) | ||
isExist, err := util.IsExist(commitGraphFile) | ||
if err != nil { | ||
logger.Error("Unable to check if %s exists. Error: %v", commitGraphFile, err) | ||
return false, err | ||
} | ||
|
||
if !isExist { | ||
commitGraphsDir := path.Join(repo.RepoPath(), `objects/info/commit-graphs`) | ||
isExist, err = util.IsExist(commitGraphsDir) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't there a case missing that this directory is not empty? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think its worth checking for the format of the directory and/or file at this point. If you are really interested in how commit graphs are created you are welcome to peruse: https://github.com/git/git/blob/master/Documentation/technical/commit-graph.txt and https://github.com/git/git/blob/master/Documentation/technical/commit-graph-format.txt Here is the salient points for the contents of commit-graphs
We could assert that the chain file exists instead of the directory I guess. |
||
if err != nil { | ||
logger.Error("Unable to check if %s exists. Error: %v", commitGraphsDir, err) | ||
return false, err | ||
} | ||
} | ||
return isExist, nil | ||
} | ||
|
||
isExist, err := commitGraphExists() | ||
if err != nil { | ||
return err | ||
} | ||
if !isExist { | ||
numNeedUpdate++ | ||
if autofix { | ||
if err := git.WriteCommitGraph(ctx, repo.RepoPath()); err != nil { | ||
logger.Error("Unable to write commit-graph in %s. Error: %v", repo.FullName(), err) | ||
return err | ||
} | ||
isExist, err := commitGraphExists() | ||
if err != nil { | ||
return err | ||
} | ||
if isExist { | ||
numWritten++ | ||
logger.Info("Commit-graph written: %s", repo.FullName()) | ||
zeripath marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} else { | ||
logger.Warn("No commit-graph written: %s", repo.FullName()) | ||
zeripath marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
} | ||
} | ||
return nil | ||
}); err != nil { | ||
logger.Critical("Unable to checkCommitGraph: %v", err) | ||
return err | ||
} | ||
|
||
if autofix { | ||
logger.Info("Wrote commit-graph files for %d of %d repositories.", numWritten, numRepos) | ||
} else { | ||
logger.Info("Checked %d repositories, %d without commit-graphs.", numRepos, numNeedUpdate) | ||
} | ||
|
||
return nil | ||
} | ||
|
||
func init() { | ||
Register(&Check{ | ||
Title: "Check if SCRIPT_TYPE is available", | ||
|
@@ -225,4 +292,11 @@ func init() { | |
Run: checkDaemonExport, | ||
Priority: 8, | ||
}) | ||
Register(&Check{ | ||
Title: "Check commit-graphs", | ||
Name: "check-commit-graphs", | ||
IsDefault: false, | ||
Run: checkCommitGraph, | ||
Priority: 9, | ||
}) | ||
} |
Uh oh!
There was an error while loading. Please reload this page.