web-dev-qa-db-ja.com

SVNブランチを削除する

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

84
GSto

確かに:svn rm不要なフォルダー、およびコミットします。

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

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

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

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

101
Wim Coenen

このブランチが外部リンクでもシンボリックリンクでもない場合、ブランチを削除するのは次のように簡単です:

svn rm branches/< mybranch >

svn ci -m "message"

リポジトリでこれを行いたい場合は、更新して作業コピーから削除します:

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

次に実行します:

svn update
54
grmartin

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

context menu

削除するブランチフォルダーを見つけて右クリックし、[削除]を選択します。

deleting the folder

コミットメッセージを入力すると、完了です。

committing

49
2rs2ts

リモートのブランチを直接削除することもできます。それが済んだら、次の更新で作業コピーから削除されます。

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

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

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

9
CodeKid

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

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

作成時に各プロジェクトにトランク、ブランチ、タグフォルダーを割り当てます。

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags
3
Chris Nava

作業コピーから:

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

3
sbi

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

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

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

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

上記の手順により、フォルダー全体ではなく、ブランチフォルダー内のファイルが取得されます。

2
Alvin Chettiar