如何设置一个简单的 SVN 服务器?

Lim*_*ent 5 svn version-control svnadmin svn-checkout svnserve

我有一个很久以前创建的工作存储库,现在我正在尝试设置另一个,但我遇到了很大的困难。这是我为创建第二个所做的工作;我希望这能奏效:

U:\repos>svnadmin create repo1
U:\repos>echo password-db = passwd >> repo1/conf/svnserve.conf
U:\repos>echo auth-access = write >> repo1/conf/svnserve.conf
U:\repos>echo user1 = user >> repo1/conf/passwd
U:\repos>cd repo1
U:\repos\repo1>svnserve -d
Run Code Online (Sandbox Code Playgroud)

而在另一个终端:

U:\>mkdir wc
U:\>cd wc
U:\wc>svn co svn://localhost/repo1
svn: E210005: Unable to connect to a repository at URL 'svn://localhost/repo1'
svn: E210005: No repository found in 'svn://localhost/repo1'
U:\wc>
Run Code Online (Sandbox Code Playgroud)

另一个存储库以相同的方式配置在u:\repo。这是怎么回事?

Lim*_*ent 4

首先,cd repo1是多余的:svnserve不关心本例中的工作目录。

要使您的示例正常工作,请更改-d-d -r \repos.

或者,您可以将co命令更改为svn co svn://localhost/repos/repo1.

运行时svn co,它使用 URL 来告诉svnserve在哪里查找存储库。默认情况下,该路径是相对于 的/,而不是启动的工作目录svnserve!现有存储库之所以有效,是因为该存储库恰好位于/,而不是因为svnserve从 启动/repo。当您希望从 以外的其他地方引用存储库的路径时/,请使用-r [--root]选项svnserve

这意味着存储在 的存储库u:\repos\repo1在启动时svnserve -r u:\repos必须通过 url /repo1( svn://localhost/repo') 而不是/repos/repo1. 卡皮什?