LoginSignup
10
6

More than 5 years have passed since last update.

GitからSubversionを理解するためのメモ

Last updated at Posted at 2014-12-15

これは何?

  • 今更聞けないけど、Subversion(以下、svn)を触らないといけないことになったので、メモ
  • 前提としてGitは知っているという前提

【注意】
理解したことをまとめてるだけなので、変なことを書いているかもしれない。そしたら教えていただきたい。

導入(インストール)

  1. 今回導入するのはWindowsなので、Apache SubversionのページからWindowsインストーラを探してくる。
  2. いくつかダウンロード先があり、何が違うのか、何を選んだら適切なのかよくわからない。 とりあえず、一番下のものを選んだ。svn serverも同封されていることも確認。 http://sourceforge.net/projects/win32svn/

【参考資料】

運用方法は?(Gitと比較しながら)

標準的な?フォルダ構成(慣習らしいので従う)

フォルダ構成
-hoge-+-trunk
      +-branches
      +-tags
  • trunk - git の master branchに相当する
  • branches - git の branch に相当する
  • tags - git のタグに相当する

Gitでは、tag, branchが機能として組み込まれているが(仕様)
Svnでは、tag, branchをフォルダとして分けて識別する(慣習)。

【参考資料】

リポジトリの作り方のコマンドは?

git initに相当すること

git : git init --bare カレントディレクトリにリポジトリが作られる。
svn : svnadmin create c:\svn-repo\test-repo 指定したパス先にリポジトリが作られる。

リポジトリができたかどうか確認する。
svn info file:///c:/svn-repo/test-repo

※指定するファイル・パスが、c:\svn-repo\test-repo から file:///c:/svn-repo/test-repo に代わるので注意。
(¥マークが/(スラッシュ)に代わる)

trunk/branches/tags のフォルダを作る(svnだけ)

実際は、一行で。

trunk,branches,tagsを作る
svn mkdir 
file:///c:/svn-repo/test-repo/trunk 
file:///c:/svn-repo/test-repo/branches 
file:///c:/svn-repo/test-repo/tags
-m "create init folders."

git clone に相当すること

svnではcheckoutというらしい。
git : git clone file:///c:\svn-repo\test-repo (暗黙的にmaster branchからcloneされると考える)
svn : svn checkout file:///c:/svn-repo/test-repo/trunk 
(svnではtrunkがgit masterブランチ相当なのでこうなる)
(このままだとtrunkというフォルダがカレントディレクトリに作成されてしまう。)

カレントディレクトリに直にcheckout(clone)する場合
svn checkout file:///c:/svn-repo/test-repo/trunk .

作成されるカレントディレクトリに名前を指定してcheckout(clone)
svn checkout file:///c:/svn-repo/test-repo/trunk hoge

【参考資料】

git add/commit/push に相当すること

svn add test.txt
svn commit -m "xxxxx" && svn update

※ gitの場合、cloneした時の向き先は、originにcloneしたリポジトリ。svnも同様になっている模様。
※ svnの場合、ファイルステージング?と呼ぶような場所がないので、add -> commit で git の add/commit/pushの操作に相当する。
svn updateは、何に相当するのかよくわからない…(要調査)

git remote 的な話。

commit(gitでいうところのpush)する際の向き先について。
svnは集中型のリポジトリなので、commitの向き先が変わるということはない。(違うサーバになるということはない)

(gitの話)commitする時に、どのブランチにpushするか?というのは、
git push -u origin XXXXX` で指定してあげます。

(svnの話)commitするときに、pushされるので、あらかじめgit checkout相当のことをしておく必要がある。
svn switch file:/// 的な感じで。

git checkout -b XXXXX に相当すること

git checkout -b XXXXXは、XXXXXという名前のブランチを作って、そのブランチに移動する。というもの。
実際に一度にはできないみたい?なので

ブランチの作成

git branch XXXX に相当

svn copy file:///c:/svn-repo/test-repo/trunk file:///c:/svn-repo/test-repo/branches/branch1 -m "hoeghoge"

ブランチに移動

git checkout XXXX に相当

svn switch svn://id@host/path/to/svnroot/branches/branch1

そのほか参考資料

svn -> git に移行をサポート?

周りの人に聞いた結果、SVNではあまりコマンドベースで触らないらしい。
Windowsでは、TortoiseSVN等を使ってGUIから触るのが一般的のよう。

10
6
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
10
6