From bee3eb079d10bd309c75c39efa1e50fbb70931d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tadeusz=20Andrzej=20Kad=C5=82ubowski?= Date: Thu, 21 Feb 2013 21:22:50 +0100 Subject: git-filter-branch.txt: clarify ident variables usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is a rare edge case of git-filter-branch: a filter that unsets identity variables from the environment. Link to git-commit-tree clarifies how Git would fall back in this situation. Signed-off-by: Tadeusz Andrzej Kadłubowski Signed-off-by: Junio C Hamano --- Documentation/git-filter-branch.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Documentation/git-filter-branch.txt') diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt index e2301f5c01..c915d0570d 100644 --- a/Documentation/git-filter-branch.txt +++ b/Documentation/git-filter-branch.txt @@ -64,8 +64,11 @@ argument is always evaluated in the shell context using the 'eval' command 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 returns a non-zero exit status, the whole operation will be aborted. -- cgit v1.2.3 From 21b6e4f24c74755d700d59edd47d5b88ff56ea5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tadeusz=20Andrzej=20Kad=C5=82ubowski?= Date: Thu, 21 Feb 2013 21:23:38 +0100 Subject: Documentation: filter-branch env-filter example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit filter-branch --env-filter example that shows how to change the email address in all commits before publishing a project. Signed-off-by: Tadeusz Andrzej Kadłubowski Signed-off-by: Junio C Hamano --- Documentation/git-filter-branch.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'Documentation/git-filter-branch.txt') diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt index c915d0570d..69a40b2107 100644 --- a/Documentation/git-filter-branch.txt +++ b/Documentation/git-filter-branch.txt @@ -332,6 +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 -- cgit v1.2.3