2017-08-09 7 views
0

私はLineageOS gerritに貢献しようとしています。一連のチェリーピックにコミットIDを追加するにはどうすればよいですか?

だから基本的に私の桜は、上流のカーネルブランチからコミットの範囲を選んだ...

は今だけ、桜のどれもコミットが変更-IDを持って選んだん。 私は手動でコミットフックとして1を追加することができます知っている:私も、私は少し私を容易にするために、対話型リベースを実行することができることを承知している ...しかし、834かそこらのコミットがある

git commit --amend 

痛み:

git rebase -i $FIRST_CP 
# Change every commit from pick to edit 
git commit --amend 
git rebase --continue 

しかし、これは、チェリーが毎回コミットするのと同じくらい悪いです。

注:私は一時的に変更IDの要件を削除することはできませんので、私は、ゲリット・サーバへの管理者アクセス権を持っていん

私は知恵の端にあり、これは本当に私の貢献にダンパーを入れています... 誰かが良いアイデアを持っているといいですね。

Addenum:また、ブランチをマージして受け入れることを望みました。

+0

「そこには834個のコミットがあります」...ここにいくつのコミットが寄付されていますか?非常に多くのコミットを書き直す必要がある状況で、どうして終わりましたか? –

+0

まあ、いくつかの文脈が役立つかもしれません..私は基本的に私のアンドロイドデバイスのためのf2fsファイルシステムをアップストリームしています...それを動作させるには。問題は、自分のコミットではないことです(そうでなければ、彼らはchange-idを持っていて問題はないでしょう)。チェリーピックはすべて、ファイルシステムには必要です。しかし、チェンジIDは – HaoZeke

+0

834は大きな数字です。これらのコミットがレビューなしでプッシュできるかどうかをプロジェクトオーナーに尋ねることができます。履歴が重要でない場合、スカッシュ・マージは十分簡単です。 – ElpieKay

答えて

0

お試しgit filter-branch --msg-filter

変更IDを生成するためのフックが~/commit-msgにあり、現在はmasterになっているとします。

#create an orphan branch "tmp" from "master". 
git checkout --orphan tmp master 
git commit -m 'new root' 

#cherry-pick all the commits from an upstream kernel branch. 
git cherry-pick <all-the-commits> 

#rewrite the commit message of every commit on "tmp" 
git filter-branch --msg-filter 'git log -1 --pretty=%B $GIT_COMMIT > msg.txt;~/commit-msg msg.txt;cat msg.txt' 

#all the commits now have Change-Id 
#cherry-pick all of them except the root to "master" 
root=$(git log --pretty=%H --max-parents=0) 
git checkout master 
git cherry-pick $root..tmp 

msg.txt現在のリポジトリの下.git-rewrite/で作成され、コマンドが実行された後.git-rewrite/は自動的に削除されます。それでは無視しましょう。

msg-filterコマンドは、Change-Idを生成するプロセスをシミュレートします。私はそれがよりエレガントかもしれないと思うが、それは私のテストで動作します。

0

-n, --no-commitはコミットすることなく1つ以上の既存のコミットをチェリーで選ぶことができます。これを実行した後、1つのコミットIDでチェリーピックされたものすべてをコミットできます。

+0

これは他の寄稿者にとってあまり公平ではありません...実際には、そのようなものに対して厳しい規則があります...それはそれらを押しつぶすより悪いです。 – HaoZeke

関連する問題