ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

TortoiseSVNで、リポジトリ作ってから、編集、競合解消するまで

2019-06-12 03:13:31 | Weblog
TortoiseSVNを使って、競合を解消する方法について、良くわからなくなるので、リポジトリを作ってから編集するまでと一緒に、手順をまとめておく。
(なお、今回書いてあるのは、あくまでも原則)

■前提
・TortoiseSVNはインストールされている
・日本語化はOKだけど、他はデフォルト設定
  →マージを「外部」のものにしている場合、競合の画面でやり方が違う

■手順

【リポジトリ(集中管理する対象)ごとに1回(=はじめに)】
1.まずは、集中管理するリポジトリを作成する

【作業者ごとに、リポジトリごとに1回】
2.各自編集者が、フォルダを用意して、自分の作業場所を用意する
   →SVNチェックアウト

【作業者の日々の作業】
3.編集してコミット
   →SVN更新、編集、コミット

【ないに越したことはないけど、起っちゃったら・・・】
4.他の場所で先に更新してると競合する。その場合の解消法




■1.まずは、集中管理するリポジトリを作成する

1-1.自分でリポジトリ用のフォルダを用意する
  今、「リポジトリ」というフォルダを作った。ここで集中管理する

1-2.「ここにリポジトリを作成」する
  上記フォルダを右クリック、TortoiseSVN→ここにリポジトリを作成


 できると、こんなかんじになる。


OKをクリック

これで、リポジトリはできている

この作業は、リポジトリ(集中管理する対象)ごとに1回(=はじめに)すればよい
(作業者が何人いても)




■2.各自編集者が、フォルダを用意して、自分の作業場所を用意する
 具体的には、フォルダを作成して、チェックアウトする。
 今、AさんとBさんがいて、それぞれ、Aさん、Bさんというフォルダを作って、
 そこで作業するものとする。ここではAさんの作業を取り上げる
 (Bさんも全く同じ作業になる)

2-1 まずは、自分の作業用フォルダを作成する
 ここでは「Aさん」というフォルダを作った。
 リポジトリと同じフォルダにいるけど、ふつうはそんなことはなく、
 サーバーが違うのが普通。

2-2 チェックアウトする
 作業フォルダ(この例だとAさん)を右クリック、「SVNチェックアウト」を選択

 出てきたダイアログで、

リポジトリのURLを入れて「OK」

これで作業フォルダにリポジトリ内にある最新のファイルが落ちてくる
この作業は、各作業者ごとに、リポジトリごとに1回(=はじめに)する。




■3.編集してコミット

 日々の作業は、この繰り返しになる。

3-1.まず、作業場所を更新する
 他人が修正しているかもしれないので、それを反映させるため、作業開始や朝とか
 適当なところで自分の作業場所を更新する(自分が更新してなくても)。
 これをしないと、あとで記述する「競合」が起こる
(いや、しても起こるときは起こるんだけど・・、減らせる・・・かな)

 更新はフォルダを右クリック「SVN更新」を選択


3-2 編集する
 好きなように、好きなエディタとか使って、編集して、保存してください。
 ここでは、こんな感じに編集したものとする。

 この段階では、保存しても、自分の作業フォルダにあるファイルが更新されるだけで
 リポジトリの中は更新されていない。

3-3 コミット
 リポジトリの中も更新して、作業場所のファイルと同じものにする(同期する)
 ために、コミットを行う。

 編集したファイル、または編集したファイルが存在するフォルダを右クリック
 ここでは、フォルダをクリックしている。

 「SVNコミット」をクリックすると、以下のダイアログがでる。

 上にコメントを書く。好きに書いていい(後でログから検索できる)
 下にコミットする対象が出てくる。
   ファイルを選択した場合にはそのファイル
   フォルダを選択した場合には、フォルダの中にあるファイル
     (サブフォルダ内のフォルダも含む※)
 コミット(リポジトリに格納)したいファイルをチェックして、OKをクリック。

ダイアログが出てきて、うまくいけばコミットした旨のことが表示される。

※フォルダは再帰的に調べる。つまり、
 フォルダの中にフォルダがあって、その中にファイルがあれば、
    そのファイルも表示されるし、
 フォルダの中にフォルダがあってその中にフォルダがあって。そこにファイルがあれば、
    そのファイルも表示されるし、
 フォルダの中にフォルダがあってその中にフォルダがあって。その中にフォルダがあって…
という風に、フォルダが中にあれば、その中を同じように調べる。

※※ ここで下のコミットする一覧に「バージョン管理外」とあるが、こればファイルを作成してから、(右クリックで)追加の処理を行っていないファイル。ここではファイルを作った時、右クリックして「追加」とする処理を省略したため、ファイル管理外になっている。
デフォルトではファイル管理外のものはチェックされない(リポジトリに格納したい場合は自分でチェックを入れる)。なので、コンパイルしてできるオブジェクトファイルなどは、登録しないで、ずっと「バージョン管理外」にしておくこともある。




■4.他の場所で先に更新してると競合する。その場合の解消法

4-1.競合が起こるまで

 普段は、「3.編集してコミット」を繰り返せばよいが、例えば、Aさん、Bさんがいて、

 Aさん、Bさんとも同じ同じファイル・同じバージョンだったところから

 のように、Aさん、Bさんが別々の内容に編集して、

「Aさんがコミットした後に」Bさんがコミットすると

のように、まず、「作業コピーを更新しろ」と出て、OKすると

とくるので、「更新する」をクリックすると

となって、競合してることがわかる。競合が起きた

4-2.競合を解消するために編集する

ということで、競合が起きたファイルを編集する。

競合したファイルを右クリック、「TortoiseSVN」→「競合を編集」を選択

こんな画面が出てくる

選ぶほうを右クリックすると

その行の内容が決定される

で、すべての行を編集したら

「解決済みとみなす」

で、

なふうになって競合は解決する

※ここは、テキストエディタで編集してもOK。
テキストエディタで開くと、競合箇所に
<<<<<<<
みたいな印(本当は半角)があるので、それらを消して、正しい内容にして保存したら

競合したファイルを右クリック、「TortoiseSVN」→「解決する」を選択

最終的に、.mineとかリビジョンが付いたファイル(競合時にできる)が削除されていればOK

4-3 再度コミット

解決したら、再度コミット

今度はうまくいく

※Bさんの結果をAさんが取り込むには、更新しないといけない





  




  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする