Merge branch 'tk/doc-filter-branch'
authorJunio C Hamano <gitster@pobox.com>
Tue, 19 Mar 2013 19:20:50 +0000 (12:20 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 Mar 2013 19:20:50 +0000 (12:20 -0700)
* tk/doc-filter-branch:
Documentation: filter-branch env-filter example
git-filter-branch.txt: clarify ident variables usage

1  2 
Documentation/git-filter-branch.txt
index dfd12c94e42b577e40665b0b10a78af184702abb,69a40b21077594f3fa8bfa206bb7e6ce9dea6214..e4c8e82660ddf9aace717e269a50ffa9adf4405e
@@@ -18,7 -18,7 +18,7 @@@ SYNOPSI
  
  DESCRIPTION
  -----------
 -Lets you rewrite git revision history by rewriting the branches mentioned
 +Lets you rewrite Git revision history by rewriting the branches mentioned
  in the <rev-list options>, applying custom filters on each revision.
  Those filters can modify each tree (e.g. removing a file or running
  a perl rewrite on all files) or information about each commit.
@@@ -29,7 -29,7 +29,7 @@@ The command will only rewrite the _posi
  command line (e.g. if you pass 'a..b', only 'b' will be rewritten).
  If you specify no filters, the commits will be recommitted without any
  changes, which would normally have no effect.  Nevertheless, this may be
 -useful in the future for compensating for some git bugs or such,
 +useful in the future for compensating for some Git bugs or such,
  therefore such a usage is permitted.
  
  *NOTE*: This command honors `.git/info/grafts` file and refs in
@@@ -64,8 -64,11 +64,11 @@@ argument is always evaluated in the she
  Prior to that, the $GIT_COMMIT environment variable will be set to contain
  the id of the commit being rewritten.  Also, GIT_AUTHOR_NAME,
  GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL,
- and GIT_COMMITTER_DATE are set according to the current commit.  The values
- of these variables after the filters have run, are used for the new commit.
+ and GIT_COMMITTER_DATE are taken from the current commit and exported to
+ the environment, in order to affect the author and committer identities of
+ the replacement commit created by linkgit:git-commit-tree[1] after the
+ filters have run.
  If any evaluation of <command> returns a non-zero exit status, the whole
  operation will be aborted.
  
@@@ -329,6 -332,26 +332,26 @@@ git filter-branch --msg-filter 
  ' HEAD~10..HEAD
  --------------------------------------------------------
  
+ The `--env-filter` option can be used to modify committer and/or author
+ identity.  For example, if you found out that your commits have the wrong
+ identity due to a misconfigured user.email, you can make a correction,
+ before publishing the project, like this:
+ --------------------------------------------------------
+ git filter-branch --env-filter '
+       if test "$GIT_AUTHOR_EMAIL" = "root@localhost"
+       then
+               GIT_AUTHOR_EMAIL=john@example.com
+               export GIT_AUTHOR_EMAIL
+       fi
+       if test "$GIT_COMMITTER_EMAIL" = "root@localhost"
+       then
+               GIT_COMMITTER_EMAIL=john@example.com
+               export GIT_COMMITTER_EMAIL
+       fi
+ ' -- --all
+ --------------------------------------------------------
  To restrict rewriting to only part of the history, specify a revision
  range in addition to the new branch name.  The new branch name will
  point to the top-most revision that a 'git rev-list' of this range
@@@ -374,7 -397,7 +397,7 @@@ git-filter-branch is often used to get 
  usually with some combination of `--index-filter` and
  `--subdirectory-filter`.  People expect the resulting repository to
  be smaller than the original, but you need a few more steps to
 -actually make it smaller, because git tries hard not to lose your
 +actually make it smaller, because Git tries hard not to lose your
  objects until you tell it to.  First make sure that:
  
  * You really removed all variants of a filename, if a blob was moved