LoginSignup
1
0

More than 3 years have passed since last update.

[svn] 偏屈で超手軽なブランチ運用方法

Last updated at Posted at 2020-10-02

svnって真面目にブランチをマージしようとすると大変だよね。
というわけで。
(ざっと検索してみたけど、既出じゃないよねドキドキ)

準備

まずは、こんな感じの極めて普通なリポジトリ。
WS002442.JPG

ただひとつ、偏屈なところは…
WS002443.JPG

.svn* が無視リストに入ってる。
ここまでで察したら、あなたすごい鋭い。

ブランチ開始

ブランチを作る前に…
WS002444.JPG

.svnフォルダのバックアップを作っておくことがポイント。
ここまでで察したら、あなたとても鋭い。

さて、ではブランチを作りましょうか。
もちろんswitch込みで。

WS002445.JPG

さらに、ブランチ側でread1st.txtを編集してみました。
そしておもむろにcommit

WS002447.JPG

一方、trunk側では…

WS002448.JPG

read1st.txtもdoc/memo.txtも編集されてます。
さらに、ブランチ運用の天敵・フォルダのリネームを添えて。

まずは、普通にマージしてみましょうか

祭り始まる。

WS002449.JPG

手動で頑張れ。

そこで、偏屈で超手軽なマージ技

こちらは、先ほどブランチ側でcommitした後の状態。

WS002450.JPG

.svn → .svn_branch
.svn_trunk → .svn
ってリネームすると…

WS002451.JPG

ブランチ元のtrunkから未commitの状態になりました。
次に、trunk側の更新を反映するため、おもむろにupdate。

WS002452.JPG

という具合に、trunk同士の競合解決とほぼ同様に処理できます。
さすがに、リネーム前のフォルダは消えちゃいますね…
今回の例ではブランチ側でdocフォルダを書き換えてないので
放っといてもいいのですが、もし書き換えてたらという仮定だと
その解決方法は? というわけで…

WS002453.JPG

ブランチ側のdocフォルダをエクスポートしてきましょうか。
そして、docsフォルダに上書き。

WS002454.JPG

ブランチ側のmemo.txtに書き変わって未commitの状態。
そしておもむろに…まだまだ。
ブランチ側の状態がtrunkでも有効か、検討しなきゃ。
今回の例ではtrunk側を採用することになるので、revertで対応。
このあたりはケースバイケースなので、うまく調整していきましょう。

で、最後に、ブランチ側からのマージ分をcommitして、任務完了!!

WS002455.JPG

補足

この方法は、別リポジトリからのマージにも使えたりします。
gitっぽく、まずローカルリポジトリで細かくcommitしていって、
一段落ついたらリモートリポジトリにcommitといった運用もあり。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0