2017-08-14 3 views
0

gitタグにスラッシュを付けて名前を付けて、フォルダ構造に配置できることを発見する前に、たくさんのタグを作成しました。サーバー上の誤って名付けられたタグを削除しても、タグをローカルに削除していない人がすべてのタグをプッシュし、古いタグと新しいタグの両方がサーバー上に再度表示されるので、誤って名前の付いたタグを取り除くことは本当に難しいです。ユーザーがすべてのタグをプッシュしないようにするにはどうすればいいですか(git push -tags)?

SourceTreeをgitクライアントとして使用しています(はい、私は誰でも "すべてのタグをプッシュ"チェックボックスをオフにしていますが、新しい人が到着してコンピュータが置き換えられることを確認しました)、Visual Studio Team Services Gitのレポ。

タグを個別に作成してプッシュできるようにするには、タグの一括挿入を避けたいだけです。

私はこの投稿を読んでいますgit pre-push hook, don't run if is --tagsしかし、解決策はWindowsでは動作しないようです。

+0

'私は誰もが「すべてのタグをプッシュ」チェックボックスをオフにしていることを確認しています。しかし、彼らは本当にとても煩わしいですか?あなたのリポジトリにいくつかの古いタグを持つことについての大きな問題は何ですか? – Chris

+0

本当に、私はそれをすることができましたが、それは私が本当にやる時間がない管理を意味します。そしておそらく後で間違ったフォーマットで新しいタグを覗き見し、名前の変更/削除が必要になるでしょう。さて、私たちはそれらと一緒に暮らすことができたと思うが、私たちのほとんどは整頓したいと思うし、SourceTreeでうまく構築されていれば古いタグにナビゲートする方が簡単だ。 –

+0

特定のパターンに一致する参照のプッシュを防ぐために、ホストされたリポジトリにルールを設定する方法を解説します。私たちは同じ問題を抱えていました。何回回っても、注意を払わなかった1人の迷子な開発者しかいなかったので、誰もが再びタグを持っていました。最後に私は正しいタグのリストをプッシュし、人々が 'refs/tags/* 'をサーバに押し込まないようにしました。これがついに猛攻撃を止めました。 –

答えて

0

gitフックやその他のスクリプトとは関係なく、すべてローカルマシン上で実行する必要があります。そこで、ローカルマシンに独自のタグを作成する前に、同期タグをリモートで使用することを提案します。

実はそれだけで、開発者は、単に作業をする前に自分のマシン上(ローカルタグを削除し、リモートからすべてのタグを取得)コマンドの下に実行する必要があるので、各ローカルマシンに一回実行する必要があります。

git tag -l | xargs git tag -d 
git fetch --tags 

その後開発者は自分のローカルリポジトリで作業することができます。git pushすべてのタグをプッシュオプションをSourceTreeで選択しても、削除した古いタグは無効になります。

さらに、server side hooks will available in future for VSTSの場合は、ポストプッシュフックを使用して、削除されたタグが再度リモートにプッシュされているかどうかを確認することもできます。はいの場合は、ポストプッシュフックで指定した特定のタグを押して停止します。

+0

はい、残念ながらこれが唯一の選択肢のようです。そして、私はまさにそれをやったと思っていましたが、どうにかして単一の開発者が古いタグを持っていて、それを押しました... Team Servicesがより有用なgitフックを持つまで、私は教育と管理を続けます。 –

関連する問題