2012-01-13 21 views
0

現在、LinuxからWindowsにレポを移行しています。私が抱えている問題は、新しいリポジトリをロードするときに階層が[reponame]\[reponame]であるということです。すべてのフォルダを1つ上に移動する方法はありますか?SVN新しいリポジトリをロード

UPDATEは

は> [repofile] Unixでリポジトリの階層何

+3

移行の手順は何ですか。あなたが何をしているかを知ることは、あなたが何をしているのかを達成するために、あなたが何をする必要があるかをもっと簡単に知ることができます。 – cdeszaq

答えて

0

たの.dumpレポ負荷 svnadminは負荷[レポ]を取得するには、次のコマンドを使用しましたか?そこにhttpを使っていましたか?

あなたが何を意味するかわからない。あなたはリポジトリにリポジトリの名前を含むディレクトリが含まれていると言っていますか?または、あなたがチェックアウトを行うとき、今のようなことを言っているのですか?

C> svn co http://server/foo/foo/trunk 

checkoutコマンドはどのようになりますか?

あなたはリポジトリはあなたがsvnadmin createコマンドで作成された単一のリポジトリのディレクトリについて話している、またはあなたが単一のリポジトリに複数のプロジェクトについて話していると言いますか?

私のリポジトリにサービスするのにsvnserveを使用しています。私たちのリポジトリmyprojと呼んで、自分のマシンに自分のリポジトリを提供したいと思っていますsoftserve。チェックアウトをしたいときは、次のようにします:

$ svn co svn://softserve/trunk myproj-trunk 

通知私は自分のサーバーの名前しか持っていません。 URLには自分のリポジトリの名前は含まれません。これは、svnserveが1つのリポジトリにしか対応できないためです。複数のリポジトリがある場合は、別々のマシンを用意するか、すべてのリポジトリを単一のリポジトリにマージするか、別のポートを使用する必要があります。

Apacheは複数のリポジトリにサービスすることができますが、各リポジトリにはアクセス用の仮想Webディレクトリが必要です。ApacheはURLを見るとSubversionリポジトリであり、httpdocsディレクトリからはディレクトリではありません。したがって、Apache URLには少なくとも1つのディレクトリがあります。

Apache Subversionリポジトリを指定するには、2つの方法があります。各Apacheの仮想ディレクトリは、単一のリポジトリを持って、この場合

<Location /myproj> 
    DAV svn 
    SVNPath C:/path/to/repository/myproj 
</Location> 

<Location /project_two> 
    DAV svn 
    SVNPath C:/path/to/repository/project_two 
</Location> 

:あなたは、このような単一のリポジトリを指定することができます。私はチェックアウトを行うときにこのように、私のコマンドは次のようになりますSVNのURLに対するこのURLに余分なディレクトリがあります

$ svn co http://softserve/myproj/trunk myproj-trunk 

ていることに注意してください。これは、サーバーを指定するだけでなく、Apacheの仮想ディレクトリも指定する必要があるためです。この場合、仮想ディレクトリ名をリポジトリ名と一致させました。私はそれをする必要はありませんが、そうでなければばかげているでしょう。

ユーザーは、URLにリポジトリ名を追加するだけです。それはまだ理にかなっています。 myprojからチェックアウトしたい場合はhttp://softserve/myprojを使用し、project_twoからチェックアウトしたい場合はhttp://softserve/project_twoを使用します。

しかし、ある企業では、Subversionサーバーから数百のSubversionリポジトリを提供していることがあります。 Apacheの設定で各リポジトリを指定するのは難しく、特に新しいプロジェクトを追加して古いプロジェクトを削除してしまうと難しくなります。

この問題を回避するには、SVNPathの代わりにSVNParentPathの指定を使用できます。これは、あなたがSubversionリポジトリのディレクトリではなく指定することができますが、それが存在する必要があり、親ディレクトリ:

<Location /source> 
    DAV svn 
    SVNParentPath C:/path/to/repository 
</Location> 

、私は自分のサーバー上の単一のディレクトリの下に私のリポジトリのすべてを置くことができ、およびApacheは自動的にそれらを提供しますすべて。新しいリポジトリが作成されると、私はSVNParentPathの下に置くだけです。 Apacheの設定を変更する必要はありません。

問題は、Apacheの仮想ディレクトリだけでなく、リポジトリ名も指定する必要があります。したがって、私のURLはディレクトリにあります。 (この場合、私はApache Parent仮想ディレクトリsourceと呼んでいます)。

$ svn co http://softserve/source/myproj/trunk myproj-trunk 

私はちょうどVisualSVNサーバーをダウンロードし、それを見ました。 VisualSVN ServerはバックエンドでApacheを実行します。それは自動的にあなたのためにそれを設定し、素晴らしい単純なフロントエンドを作成します。作成されたApacheの設定をC:\Program Files\VisualSVN Source\conf\httpd.confで見ると、私は次のようになります。

VisualSVNをセットアップすると、自動的に後者が実行されます。結局のところ、人々はVisualSVNを支払うことになります - それはあなたのためにすべてのApacheリポジトリ処理を担当します。そして、あなたのケースでは、あなたはこのような何かが生じた何かやった:

<Location /foo> 
    DAV svn 
    SVNPath C:/path/to/repository 
</Location> 

をと、C:/path/to/repositoryでのみリポジトリは、あなたのfooリポジトリです。このように、あなたのURLは次のようになります。

<Location /svn/> 
    [...] 
    SVNParentPath C:/Repositories/ 
    [...] 
</Location> 

をので、あなたがC:\Repositoriesの下であなたのfooリポジトリを置く場合は、チェックアウトは、次のようになります。

svn co http://softserve/svn/foo/trunk foo-trunk 

私が見にVisualSVNサーバーで遊んでいませんでしたsvn Apache仮想ディレクトリ名をフロントエンドから変更することができますが、より多くの構成が可能なフルバージョンを購入したことを想像して、ディレクトリにリポジトリ名と同じ名前を付けたとします。あなたが言及した

svn co http://softserve/foo/foo/trunk foo-trunk 

ダブルリポジトリ名:したがって、あなたはfooからチェックアウトするとき、あなたはこれを取得、

<Location /foo/> 
    [...] 
    SVNParentPath C:/Repositories/ 
    [...] 
</Location> 

を持っています。

私はあなたがSVNParentPathの代わりにSVNPathを使用するために、生http.confファイルをハックすることができます想像することができますので、あなたのURLは、このようなものになるだろう:

svn co http://softserve/foo/trunk foo-trunk 

しかし、私はSVNが処理する方法をビジュアル分かりませんそれ。あなたのベスト・ベットは、Apacheの仮想ディレクトリ名をデフォルトのsvnに変更するか、sourceまたはsrcに変更することだと思われます。

関連する問題