2012-02-08 6 views
1

を書き換えない:Gitのフィルタ支店は、私が使用してレポの歴史を再書き込みしようとしているすべての歴史

git filter-branch -f --env-filter ' 
     an="$GIT_AUTHOR_NAME" 
     am="$GIT_AUTHOR_EMAIL" 
     cn="$GIT_COMMITTER_NAME" 
     cm="$GIT_COMMITTER_EMAIL" 

     if [[ "$GIT_COMMITTER_EMAIL" = jacks* ]] 
     then 
      cn="Jack Slingerland" 
      cm="[email protected]" 
      an="Jack Slingerland" 
      am="[email protected]" 

     fi 

     if [[ "$GIT_AUTHOR_EMAIL" = jacks* ]] 
     then 
      cn="Jack Slingerland" 
      cm="[email protected]" 
      an="Jack Slingerland" 
      am="[email protected]" 
     fi 

     export GIT_AUTHOR_NAME="$an" 
     export GIT_AUTHOR_EMAIL="$am" 
     export GIT_COMMITTER_NAME="$cn" 
     export GIT_COMMITTER_EMAIL="$cm"' 
-- --all 

コマンドが正常に実行され、指定された著者の書き換えを行います。問題は、それが歴史のいくつかのエントリを欠場するようだということです。私はブランチの変更が統合されたときに起こっていると思いますが、わかりません。

注:これはGit + SVNを使用してGitにインポートされたSVNリポジトリです。

答えて

1

あなたの条件があなたが望むものをチェックしているとは思いません。ないでください。

if [[ "$GIT_AUTHOR_EMAIL" = jacks* ]] 

if [[ "$GIT_AUTHOR_EMAIL" =~ "jacks.*" ]] 

注意すること:これが唯一のバッシュ3.0以上で動作します。それ以外の場合は、条件チェックの一部としてgrepまたはsed外部コマンドを使用する必要があると思います。

また、コミッターの電子メールがジャックではなく、その逆の場合にのみコミッターを変更したいと考えています。だからあなたのanam割り当てをあなたのコマーメールチェックで取り出して、あなたの著者のメールチェックに似たように修正してください。

私は構文エラーを取得し終わる
+0

(bashの3.2): は/ usr/libexecに/ gitのコア/ gitのフィルタ分岐:evalの:行335:近くに構文エラー '〜=」 は/ usr/libexecに/ envフィルタに失敗しました: –

+0

'〜'と '='の順序を入れ替えてください:git-core/git-filter-branch:eval:行335: '[GIT_COMMITTER_EMAIL"〜= "jonw。*"]] '構文エラーを修正しました。 –

+0

構文エラーを修正しました。ありがとうございます。 – James

関連する問題