2016-10-31 10 views
0

私は現在、複数のワーカーがいるプロジェクトを持っていますが、クライアントはそれに取り組んでいる人の名前を知っていないはずです。私たちは2つのgitリポジトリを持っています。私たちのクライアントのひとり、誰もが取り組んでいるクライアントです。gitフックで特定のブランチの著者名を自動的に変更

私の現在のワークフローは、各レポごとに別々のフォルダを持つことです。私たちのQAが「OK、新しいバージョンは送信するのがいいです」と言うときはいつでも。私は "作業リポジトリ"から "クライアントリポジトリ"へのソースフォルダをコピーし、一回のコミット、プッシュと完了を行います。ここまでは順調ですね。しかし、間違いなく改善の余地があります。

私は、自動的に(またはプッシュする前に)マージ後のフックで著者名を難読化することによって歴史を変更するにはmasterブランチを持つことができれば、私は思っていた私はちょうどgit merge releaseマスターの内側、そしてことができるようにして、git pushとマスターは異なる起源を有する。

これは可能ですか?

あなたは間違いなく2 remotes(ないの起源)を持つことができます

答えて

1

(私は、これは奇妙なようだが、知っている...機関、パラノイアはwhatevs ...私はあきらめました)。作業中の電話番号、もう1つは代理店です。

すでに起源が設定されていると仮定すると、あなたは私が正しく理解していれば、そこ機関リポジトリに一つだけmasterブランチでなければなりませんし、それだけ含まれている必要があり

git remote add agencies http://agencies.org/crazy-repo.git 

で二番目を追加します反復で実行されたすべての作業で、リリースごとに1つのコミット。

IMOの場合、すべてのリリースで更新するローカルブランチを維持する必要があります。やってみましょう。反復の後

$ git fetch agencies 
$ git branch paranoia agencies/master 
Branch paranoia set up to track remote branch master from agencies. 

、あなたがコミット(そしておそらくtag it新しいバージョンで)realeaseを作成する必要があります。これにより、すでに代理店にリリースされているものと新しいものを見つけるのに役立ちます。

git comiit -m "Release of the next public version" --allow-empty 
git push origin master 

次に、paranoiaブランチを更新の新しい変更で更新する必要があります。

git checkout paranoia 
git cherry-pick <commit-hash-or-tag-of-previous-release>..master 
git reset --soft agencies/master 
git add -A 
git commit -m "This is all the work in the past iteration, authored by me!" 
git push 

あなたはそれを自動化するためgit aliasを作成することができます。

+0

これは間違いなく解決策です!実行されたすべての作業に対して1つのコミットを行うのではなく、コミットを保つことが可能かどうかを知っていますか?しかし、著者名を難読化しますか?しかし、唯一の代理店リモートとパラノイア支店です。 –

+1

絶対に。コミットを縮退する代わりに( 'git reset'部分)、' filter-branch'を使って全てのコミットの作者を以前のリリースから変更する必要があります。 /image/gif/paws/770172/change-the-author-and-committer-name-and-e-mail-of-multiple-commits-in-git))。 'cherry-pick'がコピーするので、' master'の "オリジナル"コミットは変更されません。 'master'と' paranoia'のコミットのハッシュを調べると、それは違うでしょう。 – fracz

+0

これは完璧です!その日の自分のヒーローを考えてください。:) –

関連する問題