0

私はsvnリポジトリを設定しています

https://hostname/svn/repo

その中に複数のプロジェクトがあり、

https://hostname/svn/repo/proj_a
https://hostname/svn/repo/proj_b
https://hostname/svn/repo/proj_c

問題なく既存のプロジェクトを操作できます。それらのいずれかをチェックアウトし、変更をコミットし、コンテンツを一覧表示できます...

今、リポジトリに新しいプロジェクトを作成したいのですが、試してみると

svn mkdir https://hostname/svn/repo/new_project

コマンドラインで私は悪名高い

Repository moved permanently to 'https://hostname/svn/repo/'; please relocate

エラーメッセージ。でリポジトリの内容を一覧表示しようとしても同じですsvn ls。前に新しいプロジェクト フォルダーを作成して後でファイルを追加する代わりにnew_project、Eclipse でフォルダーを右クリックして「プロジェクトを共有」すると、すべて正常に動作します。Eclipse でプロジェクトを共有することは、

svn import new_project https://hostname/svn/repo/new_project/trunk

コマンドラインでですよね?わからないのは何ですか?リポジトリの何が問題になっていますか?

Álvaromkdir G. Vicario が返信で気づいたように、上記のコマンドは間違っていました。

FAQのこのエントリが関連している可能性があるように見える更新( serverfault経由)

4

3 に答える 3

1

問題は、Subversionリポジトリ(複数のリポジトリを持つことができます) が Apache でどのようにセットアップされているかです。

Apache では、Subversion リポジトリをセットアップする方法が 2 つあります。次のように、各リポジトリを個別に実行できます。

<Location /svn/repos>
   DAV svn
   SVNPath /path/to/repositories/repos
</Location>
<Location /svn/repos2>
   DAV svn
   SVNPath /path/to/repositories/repos2
</Location>

この場合、https://hostname/svn/reposおよびを介してこれらのリポジトリにアクセスできますhttp://hostname/svn/repos2

ご想像のとおり、大量のリポジトリがある場合、保守がかなり困難になる可能性があります。新しいリポジトリを作成するたびに、Apache 構成を更新する必要があります。50 ほどのリポジトリがある場合、構成ファイルが非常に長くなり、維持するのが難しくなります。

これを処理するために、Apache では、一連の Subversion リポジトリを 1 つの構成で構成できます。

<Location /svn/repo>
   DAV svn
   SVNParentPath /path/to/all/svn_repositories
</Location>

これで、リポジトリ/path/to/all/svn_repositories/proj_aおよびがある場合、および/path/to/all/svn_repositories/proj_bを介してそれらにアクセスできます。http://myserver/svn/repo/proj_ahttp://myserver/svn/repo/proj_b

https://myserver/svn/repoは単一のリポジトリのルートではなく、すべてのリポジトリを含むディレクトリを表すApache仮想ディレクトリであることに注意してください。

さて、ここに 573,198.52 ドルの質問があります (インフレを伴う 64,000 ドルの質問): にコミットするとhttp://hostname/svn/repo/proj_a、 の最新のリビジョン番号も更新されhttp://myserver/svn/repo/proj_bますか? そうでない場合、各プロジェクトは個別の Subversion リポジトリであり、複数の Subversion リポジトリが同じインスタントを共有できる 2 番目の例に示すように構成されます。

つまり、 を作成するにはnew_project、Subversion サーバーにログオンし、svnadmin createコマンドを使用して新しいリポジトリを作成する必要があります。その後、URL からすぐに利用できるようになりhttps://hostname/svn/repos/new_projectます。

への変更をコミットするとproj_aの最新リビジョンがインクリメントされる場合、すべてのプロジェクトは単一の Subversion リポジトリにあり、有効な Subversion ディレクトリとしてproj_b使用できるはずです。https://hostname/svn/repoチェックアウトを試してください:

$ svn co --depth=immediates https://hostname/svn/repo

ディレクトリをチェックアウトするだけで、すべての--depth=immediatesサブディレクトリを再帰することはありません。このようにして、使用できる作業ディレクトリが作成されます。

$ svn co --depth=immediates https://hostname/svn/repo
$ cd repo
$ svn mkdir --parents new_project/trunk new_project/tags new_project/branches
$ cd ..
$ svn status
A  new_project/trunk
A  new_project/tags
A  new_project/branches
$ svn commit -m "added new_project"

それが役立つかどうかを確認してください。

于 2012-04-04T16:11:37.530 に答える
0
             svn mkdir https://hostname/svn/     new_project
svn import new_project https://hostname/svn/repo/new_project/trunk
                                            ^^^^
于 2012-04-04T10:24:13.337 に答える
0

問題は、誤って構成された apache サーバーでした。サーバー構成は次のようでした

<DocumentRoot /path>
...
<Location /path/repo>
   DAV svn
   SVNPath /path/repo
   ...
</Location>

また、subversion FAQが指摘しているように、ドキュメント ルートとリポジトリ パスは重複してはなりません。

于 2012-04-05T12:40:06.823 に答える