2

私は を使用してリモート SVN リポジトリで作業しており、ローカル開発にはワークフローgit-svnを使用しています。git-flow

残念ながら、機能ブランチにいる間に、マスターsvn dcommitしたいだけで、誤って数回実行しました。dcommit

私がやりたいことはpre-svn-dcommit、マスター ブランチにいるかどうかを確認するフックを作成することです。残念ながら、git にはそのようなフックが同梱されていないようです。

私は2つの潜在的なアプローチ/解決策を見つけました:

  1. https://github.com/padwan-ragavan/preSVNDcommitHook - ただし、git-svn バイナリを置き換えることにあまり慣れていません。
  2. http://davidsouther.com/2012/04/git-svn-dcommit-hooks/ - 一方、これは私の好み (およびニーズ) には少し複雑すぎるように見えます。

これを達成する方法について何かアドバイスはありますか?

4

2 に答える 2

1

非マスター ブランチでコミットしようとすると、エラーをスローする Git エイリアスを作成できます。

svndcm = "!f(){ if [[ $(git branch --no-color | sed -n "s/\* \(.*\)/\1/p") == "master" ]]; then git svn dcommit; else echo "Error"; fi }; f"

上記の行をファイルの[alias]セクションに含めてから、変更をコミットするために使用します。エイリアス名とエラー メッセージを好みに合わせて変更します :)~/.gitconfiggit svndcm

于 2013-06-05T11:16:39.937 に答える
1

お気づきのように、Git をネイティブに使用する簡単な解決策はありません。gitシェルを使用して呼び出しをキャッチし、それ自体を呼び出す前に追加機能を追加することで、同様のことを実現していgitます。

あなたが求めていることを正確に実行する必要があるスクリプトについては、ローカルブランチからの偶発的な dcommit を回避する方法を参照してください。

于 2013-06-05T11:20:33.093 に答える