9

いくつかのコードで正常に実行git filter-branchして、たとえば別のリポジトリをサブディレクトリ[1]にマージできます。

git filter-branch --index-filter '
  git ls-files -s |
  perl -pe "s{\t\"?}{$&helper/}" |
    GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info &&
  mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE
' remotes/helper/master

ただし、各コミットのメッセージを拡張して、以前のID(SHAハッシュ)を含めることもできます。これらのコミットには、転送されないGitHubに関するコメント/会話が含まれている可能性があるためです。

たとえば、次のような行を追加します(bob/helpersハードコードされている/事前にわかっている場合):

[COPIED FROM bob/helpers@76c7c080b3bd2f93dc78e4864899d668a57cd9f9]

私の知る限り、Gitmsg-filterは元のメッセージのみを提供し、Gitenv-filterには入力変数としてコミットID(SHAが持つ)が含まれていません。それではこれは可能ですか、それとも不可能ですか?

ありがとう!

[1]このすばらしい記事を介して、この電子メールスレッドからのPerlフィルターを使用して、MacOSXのバグを回避します。

4

1 に答える 1

5

--msg-filterそれを行う場所であり、元のコミットIDは環境変数$GIT_COMMITにあるため、(テストされていない)メッセージフィルターを単純に作成しますcat; echo "[COPIED FROM bob/helpers@$GIT_COMMIT]"

于 2012-04-20T17:45:37.777 に答える