「features」と呼ばれるSVNプロジェクトのブランチを作成しました。現在、プロジェクトを更新しようとするたびに、ブランチからのプロジェクトの別のコピーを含む機能フォルダーが表示されます。これがもう起こらないように、リポジトリからブランチを完全に削除する方法はありますか?
確かに:svn rm
不要なフォルダー、およびコミットします。
将来この状況を回避するために、SVNプロジェクトの 推奨レイアウト に従います。
/someproject/trunk
フォルダーに配置します(リポジトリにプロジェクトを1つだけ配置する場合は、単に/trunk
に配置します)/someproject/branches/somebranch
としてブランチを作成しました/someproject/tags
の下にタグを配置します作業コピーをチェックアウトするときは、必ずtrunk
または個々のブランチのみをチェックアウトしてください。 しないでくださいすべてのブランチを含む1つの巨大な作業コピーですべてをチェックアウトします。1
1何をしているのかわからない場合は、浅い作業コピーを作成する方法を知っています。
このブランチが外部リンクでもシンボリックリンクでもない場合、ブランチを削除するのは次のように簡単です:
svn rm branches/< mybranch >
svn ci -m "message"
リポジトリでこれを行いたい場合は、更新して作業コピーから削除します:
svn rm http://< myurl >/< myrepo >/branches/< mybranch >
次に実行します:
svn update
TortoiseSVN を使用している場合は、リポジトリブラウザー(コンテキストメニューで "Repo-browser"というラベルが付いています)を使用してこれを実現できます。
削除するブランチフォルダーを見つけて右クリックし、[削除]を選択します。
コミットメッセージを入力すると、完了です。
リモートのブランチを直接削除することもできます。それが済んだら、次の更新で作業コピーから削除されます。
svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"
^
は、 'svn info'に見られるように、リモートのURLの略です。 ^
は特殊文字であるため、Windowsコマンドラインでは二重引用符が必要です。
このコマンドは、ブランチを一度もチェックアウトしたことがない場合にも機能します。
チェックアウトの他の機能と同じように機能フォルダーを削除してから、変更をコミットできます。
今後これを防ぐには、SVNレイアウトの命名規則に従うことをお勧めします。
作成時に各プロジェクトにトランク、ブランチ、タグフォルダーを割り当てます。
svn
+ project1
+ trunk
+ src
+ etc...
+ branches
+ features
+ src
+ etc...
+ tags
+ project2
+ trunk
+ branches
+ tags
作業コピーから:
svn rm branches/features
svn commit -m "delete stale feature branch"
ブランチを削除するコマンドは次のとおりです。
svn delete -m "<your message>" <branch url>
リポジトリ全体をフェッチ/チェックアウトしない場合は、ターミナルで次のコマンドを実行します。
1)作業コピーを含むディレクトリの絶対パスを取得します
> pwd
2)SVNコードのチェックアウトを開始
> svn checkout <branch url> <ポイント1からの絶対パス>
上記の手順により、フォルダー全体ではなく、ブランチフォルダー内のファイルが取得されます。