git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC PATCH 1/6] Documentation: document post-rewrite hook

From
Thomas Rast <trast@student.ethz.ch>
Date
Feb 14, 2010, 16:17 UTC
Message-ID
<508ef869b6ac0b7240d6608e24a791777686c610.1266164150.git.trast@student.ethz.ch>
In-Reply-To
<cover.1266164150.git.trast@student.ethz.ch>

This defines the behaviour of the post-rewrite hook support, which will be implemented in the following patches.

We deliberately do not document how often the hook will be invoked per rewriting command, but the interface is designed to keep that at "once". This would currently not matter too much, since both rebase and filter-branch are shellscripts and spawn many processes anyway. However, when a fast sequencer in C is implemented, it will be beneficial to only have to run the hook once.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
 Documentation/githooks.txt |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index 87e2c03..41895e9 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -317,6 +317,42 @@ This hook is invoked by 'git gc --auto'. It takes no parameter, and
 exiting with non-zero status from this script causes the 'git gc --auto'
 to abort.
 
+post-rewrite
+~~~~~~~~~~~~
+
+This hook is invoked by commands that rewrite commits (`git commit
+--amend`, 'git-rebase', 'git-filter-branch').  Its first argument
+denotes the command it was invoked by: currently one of `amend`,
+`rebase`, or `filter-branch`.  Further command-dependent arguments may
+be passed in the future.
+
+The hook receives a list of the rewritten commits on stdin, in the
+format
+
+  <old-sha1> SP <new-sha1> [ SP <extra-info> ] LF
+
+The 'extra-info' is again command-dependent.  If it is empty, the
+preceding SP is also omitted.  Currently, no commands pass any
+'extra-info'.
+
+The following command-specific comments apply:
+
+rebase::
+	For the 'squash' and 'fixup' operation, all commits that were
+	squashed are listed as being rewritten to the squashed commit.
+	This means that there will be several lines sharing the same
+	'new-sha1'.
+
+filter-branch::
+	Commits that were processed by 'git-filter-branch', but not
+	changed, are not included in the list.  If the list is empty
+	after this filtering, the hook is not invoked at all.
+
+There is no default 'post-rewrite' hook, but see the
+`post-receive-copy-notes` script in `contrib/hooks` for an example
+that copies your git-notes to the rewritten commits.
+
+
 GIT
 ---
 Part of the linkgit:git[1] suite
-- 
1.7.0.216.g74d8e
Previous: Thomas RastNext: Thomas Rast
Message 2 of 34 in “post-rewrite hook and copying notes”
  1. 0/6 post-rewrite hook and copying notesThomas Rast, Feb 14, 2010
  2. 1/6 Documentation: document post-rewrite hookThomas Rast, Feb 14, 2010
  3. 2/6 commit --amend: invoke post-rewrite hookThomas Rast, Feb 14, 2010
  4. 3/6 filter-branch: invoke post-rewrite hookThomas Rast, Feb 14, 2010
  5. Johannes SixtFeb 15, 2010
  6. 4/6 rebase: invoke post-rewrite hookThomas Rast, Feb 14, 2010
  7. 5/6 rebase -i: invoke post-rewrite hookThomas Rast, Feb 14, 2010
  8. 6/6 contrib: add a hook that copies notes over rewritesThomas Rast, Feb 14, 2010
  9. Thomas RastFeb 14, 2010
  10. WIP: git notes copy --stdinThomas Rast, Feb 14, 2010
  11. Johan HerlandFeb 15, 2010
  12. 00/11 post-rewrite / automatic notes copyingThomas Rast, Feb 16, 2010
  13. 01/11 Documentation: document post-rewrite hookThomas Rast, Feb 16, 2010
  14. Junio C HamanoFeb 16, 2010
  15. Thomas RastFeb 17, 2010
  16. Junio C HamanoFeb 17, 2010
  17. 02/11 commit --amend: invoke post-rewrite hookThomas Rast, Feb 16, 2010
  18. 03/11 rebase: invoke post-rewrite hookThomas Rast, Feb 16, 2010
  19. 04/11 rebase -i: invoke post-rewrite hookThomas Rast, Feb 16, 2010
  20. 05/11 notes: clean up t3301Thomas Rast, Feb 16, 2010
  21. Junio C HamanoFeb 16, 2010
  22. 06/11 notes: implement 'git notes copy --stdin'Thomas Rast, Feb 16, 2010
  23. 07/11 notes: implement helpers needed for note copying during rewriteThomas Rast, Feb 16, 2010
  24. Junio C HamanoFeb 16, 2010
  25. Thomas RastFeb 17, 2010
  26. Junio C HamanoFeb 17, 2010
  27. Support showing notes from more than one notes treeThomas Rast, Feb 20, 2010
  28. Thomas RastFeb 20, 2010
  29. 08/11 rebase: support automatic notes copyingThomas Rast, Feb 16, 2010
  30. 09/11 commit --amend: copy notes to the new commitThomas Rast, Feb 16, 2010
  31. 10/11 filter-branch: invoke post-rewrite hookThomas Rast, Feb 16, 2010
  32. 11/11 filter-branch: learn how to filter notesThomas Rast, Feb 16, 2010
  33. Johannes SixtFeb 17, 2010
  34. Thomas RastFeb 17, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.