- ベストアンサー
svnでマージ中止後からマージできない
- trunkフォルダ内のsoftwareというフォルダ内でcpp builder2009で作成のプロジェクトファイルで作業をしているのですが、修正などの編集を行いたくなり、softwareのフォルダをtortoise svnのブランチ機能で/branch/20140722_softwareというフォルダでブランチして、修正作業はこのフォルダ内で行いました。
- マージを中止させました。そして、競合があったファイルをResolveというのを/trunk/software/に行って、再度マージを行おうとするとマージが完了しているという内容が出てきました。
- 現在/trunk/software/の最新リビジョンで、/branch/20140722_software/の最新リビジョンからのファイルでマージしようとしても、できない状態なのですが、これを取り消す方法などをありますでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず…使用しているTortoiseSVNのバージョンは明記した方がよろしいかと。 1.8.x辺りからマージダイアログの表示(と操作方法)が変わっています。 >たぶんですが、/trunk/software/フォルダは/branch/20140722_software/の内容を既にマージしているということになっているようなのですが、これを取り消す方法などをありますでしょうか? コミットしていないなら、クリーンアップで戻せる場合もあります。 作業コピーを破棄してリポジトリからチェックアウトし直す。という手段もあるでしょう。 # リポジトリに含めていない作業ファイル(オブジェクトファイルなどの中間ファイルなどなど)はなくなってしまいますが。 >このようなマージ機能の使用方法として適切な方法などご教示頂きまうよう 手元のは1.8.7なので、それでとりあえず説明でしょうかね…。 # 日本語ランゲージパック有効化済み ちなみに、私が運用している手順ですのでその辺りはご理解くださいな。 「Subversion ブランチ 運用 マージ」とかで検索すると他の例とか見つかるかも知れませんね。 1)trunkなどから作業用のブランチを作成する。 [TortoiseSVN]-[ブランチ/タグの作成]を選択。 「宛先のパス」でブランチ先のURLを入力、「作業コピーを新しいブランチに切り替える」にチェックをつけてブランチ作成。 ログメッセージは「○○の為のブランチを作成」とか適当に。 2)ブランチ先でもにょもにょと作業してコミット。 リビジョンが進む。 # ブランチ元のリビジョンが進むこともある。 3)ブランチ側が一段落。ブランチ元にマージするすることを決意する。 # マージした後はブランチ先が更新されることはほとんどないですけどね。再マージが面倒になるので。 4)作業コピーをブランチ元に切り替える。 [TortoiseSVN]-[切り替え]を選択。 「宛先のパス」でブランチ元のURLを入力、リビジョンも指定。(たいていはHEAD指定) 5)マージ作業開始。 [TortoiseSVN]-[マージ]を選択。 「リビジョンの範囲をマージ」を選択して[次へ]。 「マージ元のURL」に1)で作成したブランチ先のURLを指定。 「マージするリビジョンの範囲」はデフォルトのまま。(指定された範囲でブランチ先の先頭から最新まで…で指定もOKかと) [次へ]でマージ処理開始。 # TortoiseSVN 1.7.xとかなら「機能ブランチをマージ」でサクっと処理できたような気がしますが。 6)コンフリクトがなければそのままコミットしてマージ結果をブランチ元に適用。 コンフリクトがあった場合は手動などで解決(テキストファイルならTortoiseMergeやWinMergeで処理することもある)して、コミット。 # 2)でブランチ元のリビジョンが進まなければそうそうコンフリクトは起こらないでしょう。 # 実行ファイルとかをリポジトリに入れている場合はコンフリクトしますが、その場合は「作業コピー」のものを優先。としておきます。 # んで、コミットする前にビルドして作業コピーのバイナリを更新してからコミット。 ブランチ先はこのまま放置…になりますね。 # ブランチ先で作業中にコミットしたログを後から参照するコトもあるかも知れませんので、リポジトリからブランチ先を削除することはありませんね。 # リポジトリから削除すると後から参照したい時に面倒ですし。(リビジョンを指定して切り替えて~などなど。 削除したところでリポジトリ格納先の容量が空くこともありませんし)
お礼
回答頂きありがとうございます。 詳細な説明頂き大変ありがとうございます。実際にtortoise SVNを運用している方にお会いしたことがほとんどなく、実践的なことを教えて頂き大変助かります。 Tortoise SVNのVersionの件に関しましては抜けており申し訳ありません。Ver1.8-4を現在使っていることを確認しました。 作業を続けていてわかったことなのですが、 /branch/20140722_software/ こちらのブランチ元のフォルダは私はてっきり /trunk/software/ こちらのフォルダtrunkフォルダ内のものだろうと思い込んでいたのですが、showlogでブランチした際のrevision(rev128)を見てみると ”copy from path”という項目列に /branches/20140717_software/ rev 127 このように、rev127の上記のフォルダからブランチしていたことがわかりました。 /branches/20140717_software/ フォルダでマージをやってみたところ、こちらは正常に/branch/20140722_software/をマージすることができました。 また、 /branches/20140717_software/というのは/trunk/software/がブランチ元だと思ったのですが、 このフォルダの作成のrevisonの”copy from path”には何も表記がないので、ブランチ機能を使ったのではなく、フォルダをコピーしてきただけなのかもしれないので心配しています。 とりあえず助かりました。