我成功地在服务器上安装了subversion。当我运行命令时:
which svn
我得到的回复是:
/usr/bin/svn
我在根目录中创建了一个存储库,这是我的httpdocs文件夹,使用以下命令:
svnadmin create ~/svn
我成功地创建了以下文件和文件夹并对其进行了配置,我在svn目录中看到了下列文件和目录:
conf db format hooks locks README.txt
但是我不能创建trunk、branch和tag目录。事实上,我不能创建目录周期。这是我一直在使用的命令:
svn mkdir file:///httpdocs/svn/site
当我发出这个命令时,我得到的消息如下:
svn: Could not use external editor to fetch log message; consider setting the
$SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no
'editor-cmd' run-time configuration option was found
当我输入url:时
http://mydomain.com/svn
我收到以下消息:
404 - Not Found
我需要做些什么来配置我的存储库,检查我的存储池是否真的在工作。哦,我确实运行了以下命令:
svnserve -d
我在根目录中创建了一个存储库,这是我的httpdocs文件夹,使用以下命令。。。
如果你想让Subversion与Apache httpd协同工作,那就不是这样了。你需要Apache的mod_dav和mod_dav_svn模块。您可能需要重新编译Apache才能获得这些。
一旦安装了mod_dav和mod_dav_svn,您就需要配置httpd.conf文件(或者在httpd的conf.d
下放置一个配置文件,具体取决于它在系统上的配置方式),使其正常工作。
最终,这并没有那么困难。大多数Apache安装都添加了mod_dav和mod_dav_svn,您可以查看http.conf文件是否配置正确。在线Subversion手册将提供使其工作所需的一切。
svn:无法使用外部编辑器获取日志消息;考虑设置$SVN_EDITOR环境变量或使用--message(-m)或--file(-F)选项svn:没有设置任何环境变量svn_EDITOR、VISUAL或EDITOR,也没有找到"editor cmd"运行时配置选项
阅读信息。它说不能使用外部编辑器,因为您没有指定一个。再次,Subversion在线手册对此进行了详细解释。
基本上,当您在Subversion中提交更改时,您需要创建一个提交消息。这可以通过两种方式实现:
- 您可以像使用
svn commit -m "This is my commit message"
一样使用-m
选项 - 将变量
SVN_EDITOR
、VISUAL
或EDITOR
设置为要使用的程序的名称。例如,在Windows中,您会说C:> set EDITOR=notepad.exe
。在Unix上,你会说类似$ export EDITOR=vi
的东西。子版本首先检查SVN_EDITOR
变量的值,然后是VISUAL
,然后是EDITOR
。如果没有设置它们,则会显示您看到的错误
你为什么在svn mkdir
命令上得到它?
因为您使用命令的URL形式,它将创建目录,然后提交更改,因此需要提交消息。这应该有效:
svn mkdir -m"Adding the site directory to my repository" file:///httpdocs/svn/site
现在,您需要将存储库从HTTPDOCs目录中移出。这是一件非常糟糕的事情,因为它会伤害你的网络服务器。
如果您不想使用file://
协议,可以使用svnserve
。这是一个内置的Subversion存储库服务器,使用svn://
协议。观察:
$ svnadmin create my_repos #Creates the repository
$ vi my_repos/conf/svnserve.conf #See footnote 1 below
$ vi my_repos/conf/passwd #See footnote 1 below
$ svnserve -r my_repos -d
$ svn mkdir -m "Making basic directory layout svn://localhost/trunk
> svn://localhost/tags svn://localhost/branches
$ export SVN_EDITOR="vi"
网络上的所有机器也可以访问您的存储库。使用svnserve比Apachehttpd简单得多,但也有一些问题:
- 您不能运行
svnserve
的多个实例,因为它想要使用端口3690并且不喜欢共享。使用Apachehttpd,您可以拥有多个存储库 - svnserve的安全设置受到限制。使用Apache,我可以使用Windows Active directory或LDAP,也可以手动配置它
- 一些基于web的subversion存储库浏览器不喜欢svnserve
顺便说一句,如果你还没有,请参阅Subversion在线手册。这是我见过的任何开源项目中最好的手册之一。
1使用svnserve
设置存储库时,需要通过启用password-db = passed
行来编辑svnserve.conf
文件,该行大约是文件中的第20行。然后,您必须编辑passed
文件(位于同一目录中)来配置用户及其密码。两者都非常直接,但很容易忘记,如果不这样做,就无法将任何内容提交到存储库中。
当你需要中继分支和标签时,你需要下载import_dirs.copy
比cd /location/import_dirs.copy
之后比运行比命令
cd /data/svn/import_dirs.copy/
svn import file:///location of repos/reposname/ -m "inital message"
这就是一个例子…
cd /home/raj/import_dirs.copy/
svn import file:///srv/svn/nmg/ -m "inital message"
比主干分支和标签已经完成