初始化svn目录,svn提示文件夹不存在参数不存在,该怎么解决

博客访问: 390226
博文数量: 124
博客积分: 3236
博客等级: 中校
技术积分: 915
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
前奏svn作为一款极其优秀的开源版本控制系统,应用广泛,从组织到个人遍及各行各业。因此学习和熟练掌握它,对提高我们日常工作效率和数据安全非常重要,尤其对开发人员协同管理Project的文档,代码,各类图等,能达到事半功倍的效果。不必再每天完成工作后,打包工程目录,备份每天的版本;也不用几个人堆在一起效率低下地手工合计代码;也不用担心偶尔因忘记打包,而丢失宝贵的数据资料。现在笔者已经养成完全使用svn管理日常的一些小项目,即使是个人使用,因为实在是不想每次都打包了,然后找数据再去一堆压缩包里去找。svn有Win和Linux的版本,这里讲的是后者,而且主要是命令行操作(不过通过命令行或者能更加理解svn的工作方式和原理),前者有乌龟这类图形工具,虽功能不全,但操作也确实简单。需求分析为了避免手工管理一个我们日益变大的项目,于是我们选择svn,让程序为我们自动控制版本并记录下更改记录。但每当使用import子命令将工程导入到svn时,我们遇到一个极其恶的问题:将本地的工程目录全部提交上去之后,但是这个原始工程目录却不是工作拷贝,于是我还得把这个原始工作目录删掉,重新从版本库中checkout出来一个拷贝。这太不爽了,暂且不论这个工程占多大磁盘空间,明明有这个工程,只是缺少版本控制信息,有必要就删掉而重新检出整个工程么。于是我在google再google,但始终没有找到解决方法,后来了解到,svn本来就没有考虑过这个问题,貌似就只能删掉原始工程目录,而重新从库中检出一个带版本控制信息的一模一样的工程。Solution可能是因为个人有某种强迫症,偶还是一如继往地寻找方法企图解决这个问题,现在终于使用了一个小技巧搞定了,目前市场上还没有见到过这种方法,完全自创哦。方法如下(依然以最经典的helloworld工程为例)
:1. cd进入helloworld工程所在目录2. 递归导入工程到版本库:svn import helloworld
svn://localhost/project -m "Just Test this Trick."3.
执行最关键的命令(参数--depth=empty是精髓,它只初始化版本控制信息,不检出任何文件):svn co --depth=empty
svn://localhost/project helloworld4. 然后进入工程目录:cd helloworld5.
执行命令:svn st然后显示所有文件前全带?号,因为此时这些文件还不在版本控制管辖范围内。6. 因此我们将它们全部加入:svn
add *现在所有文件前全显示为A标记,即为Add状态。7.
为了与版本库一致,执行update命令(其实此时这些文件与现在版本库中是一模一样的,因为我们才刚刚提交完,没有作任何更改,此举是为了“骗过”svn):svn
up *此时更新必然会有冲突,而且还是100%,程序提示“在 “xxx” 中发现冲突。选择: (p) 推迟,(mf) 全用我的,(tf)
全用他人的,(h) 使用帮助以得到更多选项:”,这时我们一定要选“(mf) 全用我的“,即输入mf,否则我们前面的工作就没有意义了。8.
这时再用如下命令:svn stsvn ci命令均无显示,因为无状态变化,现在这个原始工程已经“转变“成一个work
copy了。现在开始工作吧^_^。--------------------------------俺是分隔线----------------------------------------以下是我个人曾经的学习笔记,很乱,如果能用上,则看看,高手们就忽略掉它的存在吧。http://www./svnbookhttp://subversion.tigris.org/faq.zh.htmlsudo
apt-get install subversion#sudo apt-get install
libapache2-svn(这个是和apache配合使用的,如果不打算使用apache则可不安装)完成安装后,给系统添加一个用户组(如svn),把想要加入这个组的加一下(至少要把你自己加进吧)#
Add groupsudo addgroup svn# Append user z as the supplemental Groups to
group svnsudo usermod -G svn -a zcd svnroot/mkdir
zigbee_papersudo chown -R root:svn zigbee_paper/sudo svnadmin create
/home/z/public/share/svnroot/zigbee_paper/$ svnserve -d --foreground -r
/home/svn# -d -- daemon mode# --foreground -- run in foreground (useful
for debugging)# -r -- root of directory to serve# svnserve --daemon
--root=#SVNPATH/repos
--listen-port=3690注:不推荐使用root用户启动服务,默认端口号为3690设置为随系统自动启动编写启动脚本文件,命名为svn,放到
/etc/init.d/ 中#!/bin/sh# description: svnserve auto start-stop
script.## svn command homesvn_home=/usr/bin# svn
repository homesvn_repository=/home/svn# svn
ownersvn_owner=root###if [ ! -f "$svn_home/svnserve"
]thenecho "svnserver startup: cannot start"exitficase "$1"
in'start')echo "starting svnserve..."su - $svn_owner -c
"$svn_home/svnserve -d -r $svn_repository"# if the user of script is
root,can use the command below# $svn_home/svnserve -d -r /svnecho "start
svnserve finished!";;'stop')echo "stoping svnserve..."su -
$svn_owner -c "$svn_home/killall svnserve"echo "stop svnserve
finished!";;'restart')echo "restarting svnserve..."$0 stop$0
start;;*)echo "usage: svn { start | stop | restart } "exit
1esacexit 0更改启动脚本文件属性sudo chmod 755
/etc/init.d/svn制作符号链接sudo ln -s /etc/init.d/svn
/etc/rc1.d/K99svnsudo ln -s /etc/init.d/svn
/etc/rc2.d/S99svn注:rc1,rc2,rc3,rc4,rc5,rc6
文件夹中的文件,是不同运行级别的文件,根据不同的场景,系统会自动执行不同文件夹中的文件;K 为不执行的文件,S
为执行的文件,执行的时候,按照K或者S后面的序号,从小到大逐一执行,一般自己建立的脚本,序号都命名为
99,可以有多个执行K文件,实际上是调用脚本中的stop命令;执行S开头的文件,实际上是调用文件中的start命令S40以后,才是系统网络配置完成的时刻。序号要调整到40后面SVN
1.5会更加灵活,通过-N选项将会多余,我们使用–depth选项代替它,根据规格,–depth的可能值有:–depth=empty:
更新不会拉出任何不存在的文件或目录–depth=files: 更新会拉出所有的文件,但不包括子目录–depth=immediates:
更新会拉入所有不存在的文件或子目录;但子目录的设置为depth=empty。–depth=infinity:
更新会拉入所有不存在的文件和目录,子目录的设置为depth=infinity,与目前的缺省更新行为方式相同。我们可以这样操作:
A 通过命令行操作 1、检出目录images svn co --depth=empty
/project1/images
images_work_dir这样就在本地形成了一个工作拷贝目录images_work_dir
2、进入images_work_dir目录,单独更新logo.jpg svn up
logo.jpg这样,我们就单独检出了logo.jpg,后面就可以对这个文件进行修改、提交等操作。这三个命令(svn
status、svn diff和 svn
revert)都可以在没有网络的情况下工作,这让你在没有网络连接时的管理修改过程更加简单,像在飞机上旅行,乘坐火车往返或是在海滩上奋力工作时。Subversion通过在.svn管理区域使用原始的版本缓存来做到这一点,这使得恢复本地版本而不必访问网络,这个缓存(叫做“text-base”)也允许Subversion可以根据原始版本生成一个压缩的增量(“区别”)
提交.svn revert ITEM的效果与删除ITEM然后执行svn update -r BASE ITEM完全一样,但是,如果你使用svn
revert它不必通知版本库就可以恢复文件。svn update$ svn updateU INSTALLG
READMEC bar.cUpdated to revision
50.U和G没必要关心,文件干净的接受了版本库的变化,文件标示为U表明本地没有修改,文件已经根据版本库更新。G标示合并,标示本地已经修改过,与版本库没有重迭的地方,已经合并。但是C表示冲突,说明服务器上的改动同你的改动冲突了,你需要自己手工去解决。svn
status可能返回的状态码(注意,#之后的不是svn status打印的)。L some_dir # svn已经在.svn目录锁定了some_dir
M bar.c # bar.c的内容已经在本地修改过了M baz.c # baz.c属性有修改,但没有内容修改X 3rd_party #
这个目录是外部定义的一部分? foo.o # svn并没有管理foo.o! some_dir # svn管理这个,但它可能丢失或者不完~
qux # 作为file/dir/link进行了版本控制,但类型已经改变I .screenrc # svn不管理这个,配置确定要忽略它A +
moved_dir # 包含历史的添加,历史记录了它的来历M + moved_dir/README # 包含历史的添加,并有了本地修改D
stuff/fish.c # 这个文件预定要删除A stuff/loot/bloo.h # 这个文件预定要添加C
stuff/loot/lump.c # 这个文件在更新时发生冲突C stuff/loot/glub.c # 文件在更新时发生属性冲突R
xyz.c # 这个文件预定要被替换S stuff/squawk # 这个文件已经跳转到了分支K dog.jpg #
文件在本地锁定;有锁定令牌O cat.jpg # 文件在版本库被其他用户锁定B bird.jpg # 文件本地锁定,但锁定发生错误T
fish.jpg # 文件本地锁定,但锁定丢失在这种格式下,svn
status打印五列字符,紧跟一些空格,接着是文件或者目录名。第一列告诉一个文件的状态或它的内容,返回代码解释如下:A
item文件、目录或是符号链item预定加入到版本库。C
item文件item发生冲突,在从服务器更新时与本地版本发生交迭,在你提交到版本库前,必须手工的解决冲突。D
item文件、目录或是符号链item预定从版本库中删除。M item文件item的内容被修改了。R
item文件、目录或是符号链item预定将要替换版本库中的item,这意味着这个对象首先要被删除,另外一个同名的对象将要被添加,所有的操作发生在一个修订版本。X
item目录没有版本化,但是与Subversion的外部定义关联,关于外部定义,可以看“外部定义”一节。?
item文件、目录或是符号链item不在版本控制之下,你可以通过使用svn
status的--quiet(-q)参数或父目录的svn:ignore属性忽略这个问题,关于忽略文件的使用,见“svn:ignore”一节。!
item文件、目录或是符号链item在版本控制之下,但是已经丢失或者不完整,这可能因为使用非Subversion命令删除造成的,如果是一个目录,有可能是检出或是更新时的中断造成的,使用svn
update可以重新从版本库获得文件或者目录,也可以使用svn revert file恢复原来的文件。~
item文件、目录或是符号链item在版本库已经存在,但你的工作拷贝中的是另一个。举一个例子,你删除了一个版本库的文件,新建了一个在原来的位置,而且整个过程中没有使用svn
delete或是svn add。I item文件、目录或是符号链item不在版本控制下,Subversion已经配置好了会在svn
add、svn import和svn status命令忽略这个文件,关于忽略文件,见“svn:ignore”一节。注意,这个符号只会在使用svn
status的参数--no-ignore时才会出现—否则这个文件会被忽略且不会显示!Collision:小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在冲突区所做的修改:<<<<<<<
.mineSalamiMortadellaProsciutto=======后两组之间的是Sally提交的修改冲突:=======SauerkrautGrilled
Chicken>>>>>>> .r2svn import temp/
file:///home/z/public/share/svnroot/test/在导入数据之后,你会发现原先的目录树并没有纳入版本控制,为了开始工作,你还是要运行svn
checkout得到一个干净的目录树工作拷贝。global-ignores选项是一个空格分隔的列表,用来描述Subversion在它们版本化之前不想显示的文件和目录,缺省值是*.o
*.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store。svn status,svn add和svn
import命令也会忽略匹配这个列表的文件,你可以用单个的--no-ignore命令行参数来覆盖这个选项。1、Linux命令行下将文件checkout到本地目录svn
checkout path(path是服务器上的目录)例如:svn checkout
svn://192.168.1.1/pro/domain简写:svn
co2、Linux命令行下往版本库中添加新的文件svn add file例如:svn add
test.php(添加test.php)svn add
*.php(添加当前目录下所有的php文件)3、Linux命令行下将改动的文件提交到版本库svn commit -m
“LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)例如:svn
commit -m “add test file for my test“ test.php简写:svn
ci4、Linux命令行下的加锁/解锁svn lock -m “LockMessage“ [--force]
PATH例如:svn lock -m “lock test file“ test.phpsvn unlock
PATH5、Linux命令行下更新到某个版本svn update -r m path例如:svn
update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。svn update -r 200
test.php(将版本库中的文件test.php还原到版本200)svn update
test.php(更新,与版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn
resolved,最后再提交commit) 简写:svn up 6、Linux命令行下查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v
path(显示文件和子目录状态)第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。注:svn
status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st7、Linux命令行下删除文件svn delete path -m “delete test
fle“例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test
file”或者直接svn delete test.php 然后再svn ci -m ‘delete test
file‘,推荐使用这种简写:svn (del, remove, rm)8、Linux命令行下查看日志svn
log path例如:svn log test.php
显示这个文件的所有修改记录,及其版本号的变化9、Linux命令行下查看文件详细信息svn info
path例如:svn info test.php10、Linux命令行下比较差异svn diff
path(将修改的文件与基础版本比较)例如:svn diff test.phpsvn diff -r m:n
path(对版本m和版本n比较差异)例如:svn diff -r 200:201 test.php 简写:svn di
11、Linux命令行下将两个版本之间的差异合并到当前文件svn merge -r m:n path例如:svn
merge -r 200:205
test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)12、Linux命令行下SVN
帮助svn helpsvn help
ci以上是常用命令,下面写几个不经常用的13、Linux命令行下版本库下的文件和目录列表svn list
path显示path目录下的所有属于版本库的文件和目录简写:svn
ls14、Linux命令行下创建纳入版本控制下的新目录svn mkdir: 创建纳入版本控制下的新目录。用法:
1、mkdir PATH… 2、mkdir URL…创建版本控制的目录。1、每一个以工作副本 PATH
指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。2、每个以URL指定的目录,都会透过立即提交于仓库中创建.在这两个情况下,所有的中间目录都必须事先存在。15、Linux命令行下恢复本地修改svn
revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:用法: revert PATH…注意:
本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录16、Linux命令行下代码库URL变更svn
switch (sw): 更新工作副本至不同的URL。用法: 1、switch URL [PATH]2、switch
–relocate FROM TO [PATH...]1、更新你的工作副本,映射到一个新的URL,其行为跟“svn
update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。17、Linux命令行下解决冲突svn
resolved: 移除工作副本的目录或文件的“冲突”状态。用法: resolved PATH…注意:
本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH
可以再次提交。18、Linux命令行下输出指定文件或URL的内容。svn cat
目标[@版本]…如果指定了版本,将从指定的版本开始查找。svn cat -r PREV filename > filename (PREV
是上一版本,也可以写具体版本号,这样输出结果是可以提交的)典型的工作周期:*更新你的工作拷贝o svn
update*做出修改o svn addo svn deleteo svn copyo svn
move*检验修改o svn statuso svn diffo svn
revert*合并别人的修改到工作拷贝o svn updateo svn resolved*提交你的修改o svn
commit客户端在使用类似svn,http://这种网络协议访问资源时(即通过svnserve进程),会通过一定的权限验证,这种验证是通过资源的一些配置文件设定的。如在本例中,这些配置文件放在了/usr/local/svn/test/conf/下,包括三个authz,passwd,svnserve.conf。这三个文件的配置就不详谈了。另外的几种客户端方式如http也不介绍了,svnbook上去看,都有。如果想通过网络方式,即svn,http等访问(推荐使用这种方式,而不是file://方式),必须要把svnserve进程启动,如果你不小心把机器重新启动了,一定要手动把它再启动一边。删除项目:svnadmin
dump E:\repos\project1 > aaa.dumpcat aaa.dump | svndumpfilter exclude
/tags/beta1 > bbb.dumpsvnadmin create E:\repos\project1_new svnadmin
load E:\repos\project1_new < bbb.dump1. export 出所有文件,删除你想要删除的2.
删除代码库,用 svn create 命令重建之3.
导入这样不能保留历史版本配置中文环境:1.编辑/var/lib/locales/supported.d/*
格式参考 /usr/share/i18n/SUPPORTEDvi
/var/lib/locales/supported.d/localvi /var/lib/locales/supported.d/zhvi
/var/lib/locales/supported.d/en如:more
/var/lib/locales/supported.d/localzh_CN.UTF-8 UTF-8en_US.UTF-8
UTF-8zh_CN.GB18030
GB180302.生成locale(自动保存在/usr/lib/locale/中)locale-gen3.修改localevi
/etc/environment把LANG="zh_CN.UTF-8"改成LANG="zh_CN.GB18030"more
/etc/environmentPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games"#LANG="zh_CN.UTF-8"LANG="zh_CN.GB18030"LANGUAGE="zh_CN:zh:en_US:en"CLASSPATH=.:/usr/lib/jvm/java-1.5.0-sun/libJAVA_HOME=/usr/lib/jvm/java-1.5.0-sun4.重新启动或切换下运行级别,查看localeroot@1006:~#
localeLANG=zh_CN.GB18030LANGUAGE=zh_CN:zh:en_US:enLC_CTYPE="zh_CN.GB18030"LC_NUMERIC="zh_CN.GB18030"LC_TIME="zh_CN.GB18030"LC_COLLATE="zh_CN.GB18030"LC_MONETARY="zh_CN.GB18030"LC_MESSAGES="zh_CN.GB18030"LC_PAPER="zh_CN.GB18030"LC_NAME="zh_CN.GB18030"LC_ADDRESS="zh_CN.GB18030"LC_TELEPHONE="zh_CN.GB18030"LC_MEASUREMENT="zh_CN.GB18030"LC_IDENTIFICATION="zh_CN.GB18030"LC_ALL=#!/bin/shexport
LANG=zh_CN.UTF-8export LC_ALL=zh_CN.UTF-8/usr/bin/svn update
/var/www/html --username=weiqi --password=******
阅读(5873) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。6067人阅读
SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。
Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。
SVN 官方网址:
SVN 服务器配置:
一、个人总结常用命令
1,将文件checkout到本地(当前)目录
svn checkout path(svn服务器目录)
简写:svn co
2,更新版本
svn update&
简写:svn up
实践:养成每次操作前,都up一下的好习惯,每当有人操作svn服务器下的文件,并且提交后,svn自带的版本号(int)都会自动变化,当使用此命令后,会看到如下效果:
因为我是在自己关心的文件目录下up的,如果有别的(如前端工程师)人修改了其它的文件,在这样目录下up,不会看到更新的文件,如果退回到根目录下,执行up的操作,有新版本的话,会显示所有修改的文件名称,和版本号。
经验:此命令的显示效果依赖于当前的目录,但是最终结果都会更新到最新的版本。
3,log日志
svn log ptah
简写:svn log
log信息会显示当前目录下,所有的源码修改提交记录:提交人,提交信息,提交时间,如下图所示:
对比xcode下的,一目了然。
经验:如果在根目录或是一级目录使用此命令的话,会把历史上所有(目录下)提交记录全部列出来,建议定位到在自己负责的模块内,再使用此命令。
4,详细信息
svn info path
简写:svn info
此命令是查看svn(当前目录下)的URL,Repository Root地址,版本号,最后修改的人,修改时间等详细信息
换成其他的目录下,看是什么样的结果:
经验:此命令也是依赖于当前目录的,所以要特别注意。
在MAC 终端(bash)中时使用svn命令错误汇总
svn: Could not use external editor
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 is set, and no 'editor-cmd' run-time configuration option was found
svn: 无法使用外部编辑器获得日志信息;考虑设置环境变量$SVN_EDITOR,或者使用--message (-m) 或--file (-F) 选项
svn: 没有设置SVN_EDITOR,VISUAL 或EDITOR 环境变量,运行时的配置参数中也没有 “editor-cmd” 选项
解决办法:
export SVN_EDITOR=vim
使用svn客户端功能
1.从本地导入代码到服务器(第一次初始化导入)
在终端中输入
svn import Desktop/liteabt/lite_abt/ http://你服务器的外网地址/svn/lbs/branches/lite_abt/apps/ios/iphone --username=username
Mac环境下svn的使用
http://blog.csdn.net/qq/article/details/8655204
待续、、、、、
http://blog.csdn.net/sunboy_2050/article/details/6187464
----------------------------------------------------------------------------------------------------------------------------------
先分享一篇好的文章,待手动开发学习时再补上
&LINUX SVN 命令(就是在linux下使用svn管理代码常用命令)
Linux 下svn命令大全
.cn/s/blog_ktgv.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2743849次
积分:12804
积分:12804
排名:第712名
原创:95篇
转载:24篇
评论:611条
(1)(1)(1)(1)(3)(2)(11)(6)(1)(7)(1)(1)(3)(2)(1)(10)(4)(6)(9)(4)(10)(1)(5)(4)(1)(3)(2)(9)(5)(1)(6)查看:3151|回复:15
本人svn服务是通过yum安装的,安装后,自定义的svn库路径为/opt/svn/repos,并且通过svnserve -d -r /opt/svn/repos启动服务成功,并且测试svn也是好用的。
问题是:最近学习systemctl命令,通过systemctl status svnserve.service命令查看svn状态,提示以下错误信息,不知道为什么会有如下错误发生:
---------------------------------------------------------------------------------------------------------------------------------------------------
[root@localhost /]# systemctl status svnserve.service
svnserve.service - Subversion protocol daemon
& &Loaded: loaded (/usr/lib/systemd/system/svnserve. enabled)
& &Active: failed (Result: exit-code) since 一
10:22:30 CST; 33min ago
&&Process: 3960 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=1/FAILURE)
11月 16 10:22:29 localhost.localdomain svnserve[3960]: svnserve: 根路径“/var/svn”不存在,或者不是目录。
11月 16 10:22:29 localhost.localdomain svnserve[3960]: DIGEST-MD5 common mech free
11月 16 10:22:29 localhost.localdomain systemd[1]: svnserve.service: control process exited, code=exited status=1
11月 16 10:22:30 localhost.localdomain systemd[1]: Failed to start Subversion protocol daemon.
11月 16 10:22:30 localhost.localdomain systemd[1]: Unit svnserve.service entered failed state.
中级工程师
应该是因为你不是用服务脚本启动的,所以会报错
引用:原帖由 神剑闯江湖 于
16:08 发表
应该是因为你不是用服务脚本启动的,所以会报错 怎么用服务脚本启动,可以指点下么老师?初学linux,谢谢。
中级工程师
引用:原帖由 liming1019 于
16:54 发表
怎么用服务脚本启动,可以指点下么老师?初学linux,谢谢。 systemctl start svnserve.service
引用:原帖由 神剑闯江湖 于
17:10 发表
systemctl start svnserve.service 我把已经启动的svn用killall svnserve关掉,
执行systemctl start svnserve.service是如下结果:
Job for svnserve.service failed. See 'systemctl status svnserve.service' and 'journalctl -xn' for details.
=================================================================================================================
执行systemctl status svnserve.service,仍然是:
[root@localhost ~]# systemctl status svnserve.service
svnserve.service - Subversion protocol daemon
& &Loaded: loaded (/usr/lib/systemd/system/svnserve. enabled)
& &Active: failed (Result: exit-code) since 二
16:14:13 CST; 1min 30s ago
&&Process: 7627 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=1/FAILURE)
11月 17 16:14:13 localhost.localdomain svnserve[7627]: svnserve: 根路径“/var/svn”不存在,或者不是目录。
11月 17 16:14:13 localhost.localdomain svnserve[7627]: DIGEST-MD5 common mech free
11月 17 16:14:13 localhost.localdomain systemd[1]: svnserve.service: control process exited, code=exited status=1
11月 17 16:14:13 localhost.localdomain systemd[1]: Failed to start Subversion protocol daemon.
11月 17 16:14:13 localhost.localdomain systemd[1]: Unit svnserve.service entered failed state.
=================================================================================================================
执行journalctl -xn是如下结果:
[root@localhost ~]# journalctl -xn
-- Logs begin at 二
19:24:48 CST, end at 二
16:14:13 CST. --
11月 17 16:12:57 localhost.localdomain svnserve[7622]: DIGEST-MD5 common mech free
11月 17 16:12:58 localhost.localdomain systemd[1]: svnserve.service: control process exited, code=exited status=1
11月 17 16:12:58 localhost.localdomain systemd[1]: Failed to start Subversion protocol daemon.
-- Subject: Unit svnserve.service has failed
-- Defined-By: systemd
-- Support:
-- Unit svnserve.service has failed.
-- The result is failed.
11月 17 16:12:58 localhost.localdomain systemd[1]: Unit svnserve.service entered failed state.
11月 17 16:14:13 localhost.localdomain systemd[1]: Starting Subversion protocol daemon...
-- Subject: Unit svnserve.service has begun with start-up
-- Defined-By: systemd
-- Support:
-- Unit svnserve.service has begun starting up.
11月 17 16:14:13 localhost.localdomain svnserve[7627]: svnserve: 根路径“/var/svn”不存在,或者不是目录。
11月 17 16:14:13 localhost.localdomain svnserve[7627]: DIGEST-MD5 common mech free
11月 17 16:14:13 localhost.localdomain systemd[1]: svnserve.service: control process exited, code=exited status=1
11月 17 16:14:13 localhost.localdomain systemd[1]: Failed to start Subversion protocol daemon.
-- Subject: Unit svnserve.service has failed
-- Defined-By: systemd
-- Support:
-- Unit svnserve.service has failed.
-- The result is failed.
11月 17 16:14:13 localhost.localdomain systemd[1]: Unit svnserve.service entered failed state.
麻烦再帮我看下以上结果是什么原因?谢谢。
本帖最后由 liming1019 于
16:20 编辑
中级工程师
引用:原帖由 liming1019 于
16:18 发表
我把已经启动的svn用killall svnserve关掉,
执行systemctl start svnserve.service是如下结果:
Job for svnserve.service failed. See 'systemctl status svnserve.service' and 'journalctl -xn' for details.
===== ... 你创建那个/var/svn目录试试看
引用:原帖由 神剑闯江湖 于
16:25 发表
你创建那个/var/svn目录试试看 谢谢,创建目录之后,我reboot了一次,开机后竟然默认启动了,如下:
[root@localhost ~]# systemctl status svnserve.service
svnserve.service - Subversion protocol daemon
& &Loaded: loaded (/usr/lib/systemd/system/svnserve. enabled)
& &Active: active (running) since 二
16:42:12 CST; 1min 45s ago
&&Process: 886 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1078 (svnserve)
& &CGroup: /system.slice/svnserve.service
& && && &&&└─1078 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /var/svn
但是,远程连接确又不好用了,真是奇怪了,再执行一次systemctl start svnserve.service,远程还是连不上SVN。
本帖最后由 liming1019 于
17:07 编辑
中级工程师
引用:原帖由 liming1019 于
16:52 发表
谢谢,创建目录之后,我reboot了一次,开机后竟然默认启动了,如下:
[root@localhost ~]# systemctl status svnserve.service
svnserve.service - Subversion protocol daemon
& &Loaded: loaded (/usr/lib/systemd/system/s ... netstat -aptn看下监听端口
引用:原帖由 神剑闯江湖 于
08:55 发表
netstat -aptn看下监听端口 谢谢。用svnserve -d -r /opt/svn/repos启动后,
netstat -aptn的结果是:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address& && && &&&Foreign Address& && && &State& && & PID/Program name& &
tcp& && &&&0& && &0 0.0.0.0:3690& && && && &0.0.0.0:*& && && && && &LISTEN& && &23023/svnserve& & &&
tcp& && &&&0& && &0 0.0.0.0:10000& && && &&&0.0.0.0:*& && && && && &LISTEN& && &1464/perl& && && &&&
tcp& && &&&0& && &0 0.0.0.0:22& && && && &&&0.0.0.0:*& && && && && &LISTEN& && &884/sshd& && && && &
tcp& && &&&0& && &0 127.0.0.1:25& && && && &0.0.0.0:*& && && && && &LISTEN& && &2146/master& && && &
tcp& && &&&0& & 248 172.20.2.250:22& && && &172.20.3.130:10768& && &ESTABLISHED 22872/sshd: root@pt
tcp6& && & 0& && &0 :::80& && && && && && & :::*& && && && && && &&&LISTEN& && &893/httpd& && && &&&
tcp6& && & 0& && &0 :::22& && && && && && & :::*& && && && && && &&&LISTEN& && &884/sshd& && && && &
tcp6& && & 0& && &0 ::1:25& && && && && && &:::*& && && && && && &&&LISTEN& && &2146/master& &&&
kill之后,用ystemctl start svnserve.service启动,
netstat -aptn的结果是:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address& && && &&&Foreign Address& && && &State& && & PID/Program name& &
tcp& && &&&0& && &0 0.0.0.0:3690& && && && &0.0.0.0:*& && && && && &LISTEN& && &23023/svnserve& & &&
tcp& && &&&0& && &0 0.0.0.0:10000& && && &&&0.0.0.0:*& && && && && &LISTEN& && &1464/perl& && && &&&
tcp& && &&&0& && &0 0.0.0.0:22& && && && &&&0.0.0.0:*& && && && && &LISTEN& && &884/sshd& && && && &
tcp& && &&&0& && &0 127.0.0.1:25& && && && &0.0.0.0:*& && && && && &LISTEN& && &2146/master& && && &
tcp& && &&&0& & 248 172.20.2.250:22& && && &172.20.3.130:10768& && &ESTABLISHED 22872/sshd: root@pt
tcp6& && & 0& && &0 :::80& && && && && && & :::*& && && && && && &&&LISTEN& && &893/httpd& && && &&&
tcp6& && & 0& && &0 :::22& && && && && && & :::*& && && && && && &&&LISTEN& && &884/sshd& && && && &
tcp6& && & 0& && &0 ::1:25& && && && && && &:::*& && && && && && &&&LISTEN& && &2146/master
奇怪了,都是一样的,就是第一个能连接,第二个不能连接。
本帖最后由 liming1019 于
13:47 编辑
中级工程师
引用:原帖由 liming1019 于
13:44 发表
谢谢。用svnserve -d -r /opt/svn/repos启动后,
netstat -aptn的结果是:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address& && && &&&Foreign Address& && && &State& && & ... 那你要看它报什么错
引用:原帖由 神剑闯江湖 于
14:22 发表
那你要看它报什么错 提示的是这个错:
svn: Unable to connect to a repository at URL 'svn://172.20.2.250'
svn: No repository found in 'svn://172.20.2.250'
难道我必须把SVN库,转移到/var/svn目录下?
于是我在/var/svn下新做了一个repos,初始化,配值后,结果还是提示同样的错。
这个和systemctl有关具体就先不讲了
修改/etc/sysconfig/svnserve
OPTIONS=&-r /var/svn&
/var/svn改成你的目录
引用:原帖由 sp5215726 于
17:29 发表
这个和systemctl有关具体就先不讲了
修改/etc/sysconfig/svnserve
OPTIONS=&-r /var/svn&
/var/svn改成你的目录 谢谢,我试一下。
引用:原帖由 sp5215726 于
17:29 发表
这个和systemctl有关具体就先不讲了
修改/etc/sysconfig/svnserve
OPTIONS=&-r /var/svn&
/var/svn改成你的目录 这种方式也试了,还是同样的错。而且我重新在/var/svn目录下,建了个资源库,又重新配置,这回与 OPTIONS=&-r /var/svn& 一致了,还是不好用。难道svn启动不按/etc/sysconfig/svnserve这个文件?
我今天也是添加一个centos7的自启动,遇到同样的问题,受到上老师启发,成功解决了,svn是用的svnserve这个默认配置,你要把配置改成你svn的目录就可以了首先,先验证其他配置是否正常,svnserve -d -r /var/svn/svnrepos&&测试可以update,killall svn
然后,具体操作:
OPTIONS=&-d -r /var/svn/你的svn库&
例如我的:
vim /etc/sysconfig/svnserve
OPTIONS=&-d -r /var/svn/svnrepos&
[root@XX]# ls /var/svn/svnrepos/
conf&&db&&format&&hooks&&locks&&README.txt
systemctl start svnserve.service成功
[root@XX]# systemctl status svnserve.service
svnserve.service - Subversion protocol daemon
& &Loaded: loaded (/usr/lib/systemd/system/svnserve. disabled)
& &Active: active (running) since Wed
11:27:03 CST; 8s ago
&&Process: 1507 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1508 (svnserve)
& &CGroup: /system.slice/svnserve.service
& && && &&&?””?”EUR1508 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -d -r /var/svn/svnrepos
Jan 06 11:27:03 XX systemd[1]: Starting Subversion protocol daemon...
Jan 06 11:27:03 XX systemd[1]: Started Subversion protocol daemon.
查看进程:
root& && &&&0.1 64 ?& && &&&Ss& &11:27& &0:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -d& && && && && && && && && && && && &-r /var/svn/svnrepos
再把开机自启动里面也加上systemctl status svnserve.service 以后就不用自己再手动启了
然后就可以在window上面update了
(13.55 KB)
本帖最后由 yashangqingsong 于
12:00 编辑
我遇到了类似的问题,后来发现没有建/run/svnserve目录;当然前提是楼上说的地方都已经没问题
Have a look at the /run/svnserve permission and owner. If you have changed the User that svnserve runs as then that user needs to be able to write the svnserve.pid to the /run/svnserve directory.
本帖最后由 longweis 于
16:01 编辑}

我要回帖

更多关于 svn文件夹已不存在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信