summaryrefslogtreecommitdiffstats
path: root/docs/repo-hooks.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/repo-hooks.md')
-rw-r--r--docs/repo-hooks.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/docs/repo-hooks.md b/docs/repo-hooks.md
index cbb1aac7..a56f261c 100644
--- a/docs/repo-hooks.md
+++ b/docs/repo-hooks.md
@@ -133,3 +133,43 @@ def main(project_list, worktree_list=None, **kwargs):
133 kwargs: Leave this here for forward-compatibility. 133 kwargs: Leave this here for forward-compatibility.
134 """ 134 """
135``` 135```
136
137### post-sync
138
139This hook runs when `repo sync` completes without errors.
140
141Note: This includes cases where no actual checkout may occur. The hook will still run.
142For example:
143- `repo sync -n` performs network fetches only and skips the checkout phase.
144- `repo sync <project>` only updates the specified project(s).
145- Partial failures may still result in a successful exit.
146
147This hook is useful for post-processing tasks such as setting up git hooks,
148bootstrapping configuration files, or running project initialization logic.
149
150The hook is defined using the existing `<repo-hooks>` manifest block and is
151optional. If the hook script fails or is missing, `repo sync` will still
152complete successfully, and the error will be printed as a warning.
153
154Example:
155
156```xml
157<project name="myorg/dev-tools" path="tools" revision="main" />
158<repo-hooks in-project="myorg/dev-tools" enabled-list="post-sync">
159 <hook name="post-sync" />
160</repo-hooks>
161```
162
163The `post-sync.py` file should be defined like:
164
165```py
166def main(repo_topdir=None, **kwargs):
167 """Main function invoked directly by repo.
168
169 We must use the name "main" as that is what repo requires.
170
171 Args:
172 repo_topdir: The absolute path to the top-level directory of the repo workspace.
173 kwargs: Leave this here for forward-compatibility.
174 """
175```