SVNブランチの削除


91

'features'というSVNプロジェクトのブランチを作成しました。このプロジェクトを更新しようとすると、ブランチからのプロジェクトの別のコピーを含むfeaturesフォルダーが表示されます。これがもう起こらないように、リポジトリからブランチを完全に削除する方法はありますか?


可能性のある重複削除A支店
ジム・G.

回答:


110

確かに:svn rm不要なフォルダ、そしてコミットします。

将来この状況を回避するために、SVNプロジェクトの推奨レイアウトに従います。

  • コードを/someproject/trunkフォルダーに配置し ます(または /trunk、リポジトリにプロジェクトを1つだけ配置する場合)
  • として作成されたブランチ /someproject/branches/somebranch
  • 下にタグを置く /someproject/tags

作業コピーをチェックアウトするときは、必ず、trunkまたはいくつかの個別のブランチのみをチェックアウトしてください。すべてのブランチを含む1つの巨大な作業コピーですべてをチェックアウトしないでください。1

1自分が何をしているのかを知らない限り、その場合は浅い作業コピーを作成する方法を知っています。


58

このブランチが外部またはシンボリックリンクではないと仮定すると、ブランチの削除は次のように簡単になります。

svn rm branches/< mybranch >

svn ci -m "message"

リポジトリでこれを実行したい場合は、更新して作業コピーから削除し、次のようにします。

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

次に、以下を実行します。

svn update

26
から:「ただし、URLの削除はすぐに行われるため、ログメッセージを[-m]で指定する必要がsvn rm -m message http://...あります」そのためupdate必須ではありません
rymo 2012

57

TortoiseSVNを使用している場合は、リポジトリブラウザ(コンテキストメニューで「リポジトリブラウザ」というラベルが付いています)を使用してこれを実行できます。

コンテキストメニュー

削除したいブランチフォルダを見つけて右クリックし、「削除」を選択します。

フォルダを削除する

コミットメッセージを入力すれば完了です。

コミット


SVN更新を実行して、ディスクからフォルダーを削除します(ブランチを削除する前に削除されていない場合)
ArieKanarie

12

リモートのブランチを直接削除することもできます。それが終わったら、次のアップデートで作業コピーから削除されます。

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

^「SVN情報」に見られるように、リモートのURLの略です。^は特殊文字であるため、Windowsコマンドラインでは二重引用符が必要です。

このコマンドは、ブランチをチェックアウトしたことがない場合にも機能します。


私はこれをMacから使用しましたが、うまく機能しました。一番上の答えを試したところ、「 '/ local / path / to / repo / branchs / branch-name'は作業コピーではありません」という応答が返されました。おそらく、作成したブランチをチェックすることができなかったでしょう
Mad Bernard

3

チェックアウトの他のフォルダーと同じように機能フォルダーを削除してから、変更をコミットできます。

将来これを防ぐために、SVNレイアウトの命名規則に従うことをお勧めします。

作成時に、各プロジェクトにトランク、ブランチ、タグフォルダーを指定します。

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags

3

作業コピーから:

svn rm branches/features
svn commit -m "delete stale feature branch"


3

ブランチを削除するコマンドは次のとおりです。

svn delete -m "<your message>" <branch url>

リポジトリ全体をフェッチ/チェックアウトしたくない場合は、ターミナルで次のコマンドを実行します。

1)作業コピーを含むディレクトリの絶対パスを取得します
> pwd
2)svnコードチェックアウトを開始します
> svn checkout <ブランチURL> <ポイント1からの絶対パス>

上記の手順では、フォルダ全体ではなく、ブランチフォルダ内のファイルを取得します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.