web-dev-qa-db-ja.com

EGit:リモートリポジトリで削除されたリモート追跡ブランチのプルーニング

開発者のチームでEGit(Eclipse用)を使用しています。新しい作業のためにfeatureブランチとfixブランチを多数作成し、それらが完了したらreleaseブランチにマージしています。これらが正しいreleaseブランチにマージされた直後、これらの一時的なブランチは通常、リモートリポジトリをクリーンに保つために削除されます。

これらのブランチが削除されると、リモートリポジトリからフェッチされますが、EGitはそれらをリモートトラッキングビューから削除しないことに気づきました。私のリモートトラッキングビューには、リモートリポジトリに存在しない削除されたブランチが引き続き表示されます(それらが削除されたことを示すものはありません)。リモートトラッキングビューに実際のリポジトリを反映させる唯一の方法(私が見つけた)は、リモートトラッキングブランチをすべて手動で削除(ハイライトして削除)してから、再度フェッチすることです。これは、特に次のように、コマンドラインを介してリモートブランチをプルーニングできるため、非常に回り道のようです。

git remote Prune Origin

基本的に、リモートトラッキングブランチが変更されたときにEGitがこのプルーニングを実行するように構成/作成する方法があるかどうかを知りたいです(フェッチした後)これは、Originリモートでの現在のフェッチ構成です:

enter image description here

28
Steven Byle

2014年3月の更新: cheshireanswer で言及されているように、 EGit 3. はそのプルーン機能を追加しました。

Gerrit code review で紹介されているこの機能を JGit で見ることができます(そして tested here

エントリfetch.Prunegit config をEgit設定に追加できます:

https://wiki.Eclipse.org/images/f/f8/RepositoryConfigurationSettings.png


元の回答(2013年3月)

EGitは、(私がフェッチした後で)リモート追跡ブランチが変更されたときにこのプルーニングを実行します。

私が知っていることではありません。

より一般的には、クライアント側での各フェッチがフックで不可能である後にアクションを実行します。
要求された があり、サーバー側でのみ実装されていました: フックpost-upload (フェッチ後に実行)、ただしマルチユーザー環境でのセキュリティ上の理由から削除されました。

38
VonC

最近の EGit 3.3リリース はPruneサポートを導入しました。

fetch.Pruneまたはremote.<yourremotename>.Pruneキーをgitconfigに追加し、trueに設定します。 EGitでフェッチすると、中央リポジトリーから削除されたブランチが自動的にプルーニングされます。

11
cheshire

Git-Settingsでfetch.Prune = trueを設定すると、問題が解決します。リポジトリ設定で行う場合は、リポジトリごとにこの設定を変えることができます。リポジトリごとにこの設定を使用する場合は、ユーザー設定にfetch.Prune = trueを設定することをお勧めします。そのため、リポジトリごとに繰り返す必要はありません。

1
Joe.Hurke