2017-11-03 21 views
0

Gitリポジトリでは、ファイルを元の場所からローカルの場所に引っ張ってから、同期をとる別のスクリプトを実行することが絶対に重要です。 (私を含め)プログラマーも重要なものを忘れてする傾向があるよう はしかし、私は小さなbashスクリプトを書くのより良いと思う:git pullを直接使用できないようにする

git pull origin master 
# do our synchronizing stuff 

しかし、それはまだ問題が解決しないだろう:すべての開発者ができましたスクリプトを使用せずに平文をgit pullにしてください。だから、私が念頭に置いているのは、Gitリポジトリを特別なパラメータでプルできるように設定することです。 specialパラメータが存在しない場合は、カスタムメッセージを返します。これと同じように:

git pull origin master -special-parameter 
# do our synchronizing stuff 

git pull not allowed directly. Please use our special script.に終わるだろう-special-parameterなしgit pull origin masterを行う これは可能ですか?

唯一の解決策は、su -cgit pullを完全な権限としてspecial_script_userに付与し、リポジトリのすべての権限を取り消し、ユーザー権利を変更することです。しかし、それは本当にエレガントではありません。

答えて

1

これにはgit hooksがあります。スクリプトをpost-mergeフックとして定義すると、git pullまたはgit mergeの後に自動的に実行されます(この2つを区別するための変数があります)。

Be aware though that git hooks are not part of the repository contentつまり、あなたはあなたの最後にフックをコミットすることはできませんし、他の誰もが魔法のようにそれらを持っていることを意味します。

解決策は、フックスクリプトをリポジトリにコミットし、各開発者に最初にリポジトリをクローンするときにアクティブにするように要求することです。これは、例えば、 .git/hooksディレクトリにコピーまたはリンクし

ln -s hooks/post-merge .git/hooks/ 

と一度だけ行う必要があります。

+0

私は票を落としません、これを確認してくださいhttps://snag.gy/KMphIT.jpg – jezrael

関連する問題