Subversionのリポジトリについての質問です。


ディレクトリ構成
/A
 +AA
 |+AAA
 |+AAB
 +AB
  +ABA
  +ABB

仕事で接続する取引先のサーバ(おそらくLinux)は上記のディレクトリ構成のリポジトリで、
リポジトリに/A指定で全て、/A/AA指定でAAAとAAB、/A/AA/AAA指定でAAAのみといったように
全てのディレクトリのチェックアウトが可能です。
こういったリポジトリはどのように作成しているのでしょうか。
単純に上記のディレクトリ毎にリポジトリを作成しているのでしょうか?
また、TortoiseSVNを使って同じことを再現できるでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/19 16:41:57
  • 終了:2009/10/20 08:40:11

回答(2件)

id:t-wata No.1

t-wata回答回数82ベストアンサー獲得回数132009/10/19 17:21:20

ポイント100pt

http://tortoisesvn.tigris.org

普通にリポジトリを作って、Aというディレクトリ配下にAA、ABのディレクトリを作ってさらにそのサブディレクトリも掘ってimportすればそうなります。

以下の手順で確認できます。

(1)TortoiseSVNでリポジトリを作成

適当なフォルダ(例 D:\repository)を作成 → そのフォルダを右クリック → TotoiseSVN → Create repository hereを実行

(2)質問文にあるようなディレクトリ構造を適当なフォルダ(例 D:\tmp)配下に作成

(3)(2)で作ったフォルダを(1)のリポジトリにインポート

D:\tmpを右クリック → TortoiseSVN → Importを実行 → リポジトリパスにfile:///D:/repository を指定

(4)確認する

何も無い場所で右クリック → TortoiseSVN → Repository Browser → リポジトリパスにfile;///D:/repository を指定

id:Lovin

回答ありがとうございます。

質問文が少し言葉足らずだったかもしれません。

チェックアウトの際のリポジトリにfile:////D://repository/A/AAを指定すれば

/AA/AAAと/AA/AABがチェックアウトできるみたいなんですが・・・

回答頂いた方法は試していまして、

file:////D://repository以下にディレクトリがないので怒られてしまいます。

(追記)

チェックアウトの際にfile:////D://repository/A/AAではなく、

file:////D://repository/AAを指定することで実現できました。

Importの方法に問題があるのかもしれません。

2009/10/20 06:09:24
id:makeworld No.2

makeworld回答回数75ベストアンサー獲得回数232009/10/19 20:14:50

ポイント100pt

質問の構成は、リポジトリは/Aのみです。

サブディレクトリをチェックアウトするかの選択は、チェックアウト時の「チェックアウトする深さ」で選択できます。(デフォルトは再帰的なので、配下のすべてのディレクトリもチェックアウトされます)


TortoiseSVNでのリポジトリ作成方法は、t-wataさんの通りだと思います。


サーバのコピーリポジトリを作成する手順は、下記の通りです。

1. リポジトリ用の空のディレクトリを作成(C:\svnreposなど)

2. リポジトリ作成

空のディレクトリを右クリックして、「ここにリポジトリを作成」選択します。

※ リポジトリの作成に成功すると、そのディレクトリ内に、confやdbなどのフォルダが作成されます。

3. コピー元のファイルをエクスポート

リポジトリブラウザでサーバのリポジトリを表示して、左側の/Aを右クリックして、「エクスポート」を選択し、エクスポート先に空のディレクトリ(C:\tmp-exportなど)を指定します。

4. エクスポートしたファイルをインポート

エクスポートしたディレクトリ(C:\tmp-exportなど)を右クリックして、「インポート」を選択し、リポジトリのURLに、手順1で作成したリポジトリのURL(file:///C:/svnreposなど)を指定します。

5. リポジトリブラウザで、新しいリポジトリ(file:///C:/svnreposなど)の内容を確認


ただし、TortoiseSVNでは、リポジトリのダンプ(バックアップ)ができないらしいので、別途Windows用のSubversionもインストールした方が良いかもしれません。

OUTFOCUS Wiki - wifky! - 四方山話 - 吉里吉里/KAGでTortoiseSVNを使う

もし、サーバのリポジトリ上の変更履歴やログも残したい場合は、サーバの管理者にdumpデータをもらって、svnadmin (Subversionのコマンド)でリポジトリを復元できます。

id:Lovin

回答ありがとうございます。

リポジトリのコピーの方法は参考にさせていただきます。

でもこの方法だと新しいリポジトリに履歴は残らなさそうですね。

> ただし、TortoiseSVNでは、リポジトリのダンプ(バックアップ)ができないらしい

これは知らなかった話です。

単純にリポジトリ全てをバックアップしておけばよいものと思っていました。

2009/10/20 06:03:49
  • id:jan8
    t-wataさんの回答で良いと思いますよ。
    Lovinさんの試している方法で、指定したディレクトリ以下だけチェックアウトする事が出来るはずです。

    更に指定したディレクトリ内のファイルのみチェックアウトするか、
    その中のファイルも再帰的にチェックアウトするかも選択できます。

    以下のアドレス指定方法も間違いないはずですよ。
    file:///D:/repository/A/AA

    おかしいですね?何か他に原因があるはずですが・・・
  • id:b-wind
    >file:///D:/repository以下にディレクトリがないので怒られてしまいます。
    リボジトリフォルダ自体にディレクトリ作ったりしてないですか?
    フォルダの追加等はあくまで import 対象のフォルダか、checkout 後のフォルダに対して行う物ですよ。
  • id:Lovin
    jan8さん
    t-wataさんへのコメントに書いたとおり、file:///D:/repository/AAで思うようなことができました。
    file:///D:/repository/A/AAが指定できないということはImportに問題があるのでしょうか。
    CVSをしばらく使っていましたが、CVSではImportを指定したディレクトリ自体も
    リポジトリのパスとして指定できたような気がするのですが、
    Subversionではそのようにならないみたいですね。

    b-windさん
    > リボジトリフォルダ自体にディレクトリ作ったりしてないですか?
    過去にCVSを使っていたことがありますので、浅いと思いますが一応理解しているつもりです。
    リポジトリとImport元やCheckout先は当然ですが別にしてあります。

    今回の質問の背景としては、取引先→オーダーというディレクトリ構成でバックアップしている環境を、
    Subversionに移行するという目的でアレコレやっていてつまずいた、ということで質問した次第です。
    取引先やオーダー毎にリポジトリを分けるのが正解なのかもしれませんが、なんか美しくない気がしまして・・・
    とりあえず上位の階層のディレクトリから少しずつImportしてみます。
  • id:t-wata
    > file:///D:/repository/AAで思うようなことができました。
    なら、importの時に、D:\tmpを右クリック ではなく、D:\tmp\A を右クリック でimportしてしまったのでしょう。
    importするときは、右クリックしたフォルダ自体はimportされないので。
  • id:Lovin
    t-wataさん
    > importするときは、右クリックしたフォルダ自体はimportされないので。
    仰るとおりです。
    自分の理解不足であることを痛感いたしました。
    回答、コメントを頂いた皆様に感謝いたします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません