svn常见问题,报错,命令及总结

我自己犯过的一个错误是:/svn/MyERP_core_Main/!svn/act/b8bd621b-c193-4969-b66c-d35f11009815 后来证实是地址的大小写问题,我修改了大小写,然后删掉了本地的文件,check
out服务器的文件,然后提交和更新就好了,麻烦之处在于,你需要重新将文件修改,然后提交上去。

svn更换提交地址:svnswitch --relocatehttp://1.1.5.54:8080/svn/MyERP_Core_Main/MyERP_Core/trunk/trunk_ios5x_1_2http://1.1.5.54:8080/svn/MyERP_Core_Main/MyERP_Core/trunk/trunk_ios5x_1_2

svn某一文件(BillUIDeviceFunction.m)存在冲突,我就将旧文件拷出来直接取代新文件 然后再用:svn
resolved BillUIDeviceFunction.m Resolved conflictedstate of ‘BillUIDeviceFunction.m‘

这个svn resolves命令告诉系统冲突已经解决请忽略。

svn add foobar 时出现xx is already under versioncontrol 我的方法是:先添加,再提交,记得要层层add然后提交一遍 举例:HummingBird/Config_Vehicle/Mobile/Vehicle,Config_Vehicle是新文件夹,在HummingBird svn add Config_Vehicle,然后svncommit
-m " " 然后再cd到Config_Vehicle svn add Mobile 一层层add commit下去,貌似是这样,如果不行就运行下边的代码删除隐藏的.svn文件,再试。

find . -name ".svn" |xargs rm -Rf

知识点-1013-7-19

问题1:’.’ is not a working copy.Can’t open file‘.svn/entries’: 系统找不到指定的路径。

解答:原因是输入的访问路径不正确,如svn://192.168.6.200/如果最后少写了“/”,就会出现这种错误提示。

问题2:将文件checkout之后,没有出现SVN的图标,是怎么回事?

解答:有些时候在客户端Checkout文件后,SVN的系统图标也会不显示,可以执行一下“Cleanup”,就会出现SVN的系统图标。

问题3:为什么添加的文件,别人看不到,版本库里也没有?

解答:最可能的原因是,你只是执行了“Add”而没有“Commit”,这样只是在本地注明某个文件是预定要增加的,而没有实际添加到版本库中,要添加到版本库必须执行“Commit”。删除文件也是一样。

问题4:“Commit failed。……You have toupdate your working copyfirst”  提交失败,需要首先执行更新操作。

解答:多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导致该错误;解决方法:对工作复本中的文件进行更新即可。

问题5:更新时提示文件发生冲突:“One ormore files are not a conflicted state。”

解答:多人同时修改同一文件的同一部分,SVN无法自动进行合并,会导致该错误;解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。

问题6:“Commit failed;File alreadyexists”提交失败,文件**已存在。

解答:版本管理系统在改变你的计算机上的工作副本时,是非常的小心的。在做任何事情之前,它都尽可能把您的意图写到你的计算机上的日志文件中去。但如果偶然地操作中断了(例如:突然停电了,您的计算机死机了),那么日志文件记录就可能同您最后的工作状态不一致。一种建议解决途径:先把要提交的东西拷出来放到其它目录,再更新本地文件,然后把拷出来的文件重新放回去提交。

问题7:Working copy’**’locked.Please execute the ’Clean up’command.

解答:Subversion客户端在提交内容之前会在本地的工作拷贝写日志,防止其他客户端再次作操作,如果这个提交过程中发生错误,就会存在未清理的日志,解决这个问题之需要执行“清理”操作,整理你的计算机上的工作副本,清理错误的日志记录,使您可以继续操作。

问题8:执行cleanup时,出现错误“Subversion reported an error while doing a cleanup!” ‘**‘is not a working copy directory ”

解答:遇到这种情况,先删除隐藏文件夹.svn中的tmp下面的临时文件,再执行cleanup。

问题9:因为仓库与目录很多,使用TSVN每次选择目录URL ofrepository有很多地址,如何才清除呢?像清除浏览器中的历史那样,用什么方法呢?

解答:右键->TortoiseSVN->Settings->SavedData,就可以清除你想要的东西了,包括URL、log、窗口大小、密码缓存等。

问题10:在SVN中选中一个目录showlog时,出现了某些版本只显示版本号和(nodate),没有其他信息,什么原因引起的?

解答:出现了(no date)的revision,为其他人修改了你所没有权限访问的某个目录下的文件。

问题11:Attempted to lock analready-locked dir       is not under versioncontrol

I deleted the log file in the .svn directory (I also deleted theoffending file in .svn/props-base)

Then did acleanup..          Then resumed my update.

问题12:svn: warning: ‘xxxxx‘ isalready under version control解决办法?

只添加相应目录到SVN,但不添加目录下的文件:

#svn stuploads|grep ^?|awk "{print /$2}"|xargs svn add -N

原因:  很可能是 .svn 隐藏目录版本信息被修改了

解决办法:

删除uploads目录下的.svn目录及下面的文件(保留uploads目录的.svn)

#finduploads |grep ‘uploads/[^/.]*/.svn‘|xargs rm -rf

或者:find. -name ".svn" |xargs rm -Rf

Mac svn命令linux同样适用

1、将文件checkout到本地目录

svn checkoutpath(path是服务器上的目录)

例如:svn checkout svn://192.168.1.1/pro/domain

简写:svn co

2、往版本库中添加新的文件或文件夹

svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svn commit-m “LogMessage“ [-N] [--no-unlock]PATH(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “add test file for my test“ test.php

简写:svn ci

4、加锁/解锁

svn lock -m “LockMessage“ [--force] PATH

例如:svn lock -m “lock test file“ test.php

svn unlock PATH

5、更新到某个版本

svn update -r mpath

例如:

svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)

svn updatetest.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)

简写:svn up

6、查看文件或者目录状态

1)svn status path(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svn status -v path(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:svn status、svn diff和 svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:svn st

7、删除文件

svn delete path -m “deletetest fle“

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile”

或者直接svn delete test.php 然后再svn ci -m ‘delete testfile‘,推荐使用这种

简写:svn (del, remove,rm)

8、查看日志

svn log path

例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svn info path

例如:svn info test.php

10、比较差异

svn diff path(将修改的文件与基础版本比较)

例如:svn diff test.php

svn diff -r m:n path(对版本m和版本n比较差异)

例如:svn diff -r 200:201 test.php

简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n path

例如:svn merge -r 200:205test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助

svn help

svn help ci

13、版本库下的文件和目录列表

svn list path

显示path目录下的所有属于版本库的文件和目录

简写:svn ls

14、创建纳入版本控制下的新目录

svn mkdir: 创建纳入版本控制下的新目录。

用法: 1、mkdir PATH…

2、mkdir URL…

创建版本控制的目录。

1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增

调度,以待下一次的提交。

2、每个以URL指定的目录,都会透过立即提交于仓库中创建。

在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改

svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:

用法: revert PATH…

注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复

被删除的目录

16、代码库URL变更

svn switch (sw): 更新工作副本至不同的URL。

用法: 1、switch URL [PATH]

2、switch –relocate FROM TO [PATH...]

1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将

服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的

方法。

2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动

(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用

这个命令更新工作副本与仓库的对应关系。

17、解决冲突

svn resolved: 移除工作副本的目录或文件的“冲突”状态。

用法: resolved PATH…

注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的

相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。

svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。

svn cat -r PREV filename > filename (PREV是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

Aborting commit: ‘XXXXXXXX‘remains in conflict错误

今天在提交项目文件到本地SVN时提示错误如下:

过期:”global.php“在事务”21-1“,

You have to update your working copy first.

运行update更新后再次提交又出现如下错误:

svn: Commit failed (details follow):svn: Aborting commit:‘global.php‘ remains inconflict查了一下SVN的手册才知道原来是多个版本之间遇到冲突。此时你需要解决冲突(合并别人的修改)。

--------------------------------------------------------------------------------

举一个例子,Sally修改了sandwich.txt,Harry刚刚改变了他的本地拷贝中的这个文件并且提交到服务器,Sally在提交之前更新它的工作拷贝得到了冲突:

$ svn update C sandwich.txt Updated to revision 2. $ ls -1sandwich.txt sandwich.txt.mine sandwich.txt.r1 sandwich.txt.r2

在这种情况下,Subversion不会允许你提交sandwich.txt,直到你的三个临时文件被删掉。

$ svn commit --message "Add a few more things" svn: Commit failed(details follow): svn: Aborting commit:‘/home/sally/svn-work/sandwich.txt‘ remains in conflict

如果你遇到冲突,三件事你可以选择:

“手动”合并冲突文本(检查和修改文件中的冲突标志)。

用某一个临时文件覆盖你的工作文件。

运行svn revert <filename>来放弃所有的修改。

一旦你解决了冲突,你需要通过命令svnresolved让Subversion知道,这样就会删除三个临时文件,Subversion就不会认为这个文件是在冲突状态了。

$ svn resolved sandwich.txt Resolved conflicted state of‘sandwich.txt‘

手工合并冲突

第一次尝试解决冲突让人感觉很害怕,但经过一点训练,它简单的像是骑着车子下坡。

这里一个简单的例子,由于不良的交流,你和同事Sally,同时编辑了sandwich.txt。Sally提交了修改,当你准备更新你的版本,冲突发生了,我们不得不去修改sandwich.txt来解决这个问题。首先,看一下这个文件:

$ cat sandwich.txtTop piece ofbreadMayonnaiseLettuceTomatoProvolone<<<<<<<.mineSalamiMortadellaProsciutto=======SauerkrautGrilledChicken>>>>>>>.r2Creole MustardBottom piece ofbread小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在冲突区所做的修改:

<<<<<<<.mineSalamiMortadellaProsciutto=======后两组之间的是Sally提交的修改冲突:

=======SauerkrautGrilledChicken>>>>>>>.r2通常你并不希望只是删除冲突标志和Sally的修改—当她收到三明治时,会非常的吃惊。所以你应该走到她的办公室或是拿起电话告诉Sally,你没办法从从意大利熟食店得到想要的泡菜。一旦你们确认了提交内容后,修改文件并且删除冲突标志。

Top piece ofbreadMayonnaiseLettuceTomatoProvoloneSalamiMortadellaProsciuttoCreoleMustardBottom piece of bread现在运行svn resolved,你已经准备好提交了:

$ svn resolved sandwich.txt$ svn commit -m "Go ahead and use mysandwich, discarding Sally‘sedits."记住,如果你修改冲突时感到混乱,你可以参考subversion生成的三个文件—包括你未作更新的文件。你也可以使用第三方的合并工具检验这三个文件。

拷贝覆盖你的工作文件

如果你只是希望取消你的修改,你可以仅仅拷贝Subversion为你生成的文件替换你的工作拷贝:

$ svnupdateC  sandwich.txtUpdatedto revision 2.$ lssandwich.*sandwich.txt  sandwich.txt.mine  sandwich.txt.r2 sandwich.txt.r1$cp sandwich.txt.r2 sandwich.txt$ svn resolved sandwich.txt下注:使用svnrevert

如果你得到冲突,经过检查你决定取消自己的修改并且重新编辑,你可以恢复你的修改:

$ svn revert sandwich.txtReverted ‘sandwich.txt‘$ lssandwich.*sandwich.txt注意,当你恢复一个冲突的文件时,不需要再运行svn resolved。

现在我们准备好提交修改了,注意svnresolved不像我们本章学过的其他命令一样需要参数,在任何你认为解决了冲突的时候,只需要小心运行svnresolved,—一旦删除了临时文件,Subversion会让你提交这文件,即使文件中还存在冲突标记。

提交你得修改

最后!你的修改结束了,你合并了服务器上所有的修改,你准备好提交修改到版本库。

svncommit命令发送所有的修改到版本库,当你提交修改时,你需要提供一些描述修改的日志信息,你的信息会附到这个修订版本上,如果信息很简短,你可以在命令行中使用--message(-m)选项:

$ svn commit --message "Corrected number of cheese slices." Sendingsandwich.txt Transmitting file data . Committed revision 3.

然而,如果你把写日志信息当作工作的一部分,你也许会希望通过告诉Subversion一个文件名得到日志信息,使用--file选项:

$ svn commit --file logmsg Sending sandwich.txt Transmitting filedata . Committed revision 4.

如果你没有指定--message或者--file选项,Subversion会自动地启动你最喜欢的编辑器来编辑日志信息。

版本库不知道也不关心你的修改作为一个整体是否有意义,它只检查是否有其他人修改了同一个文件,如果别人已经这样做了,你的整个提交会失败,并且提示你一个或多个文件已经过时了:

$ svn commit --message "Add another rule" Sending rules.txt svn:Commit failed (details follow): svn: Out of date: ‘rules.txt‘ intransaction ‘g‘

此刻,你需要运行svn update来处理所有的合并和冲突,然后再尝试提交。

我们已经覆盖了Subversion基本的工作周期,还有许多其它特性可以管理你得版本库和工作拷贝,但是只使用前面介绍的命令你就可以很轻松的工作了。

时间: 2024-10-09 00:13:35

svn常见问题,报错,命令及总结的相关文章

SVN 操作报错 “Previous operation has not finished; run &#39;cleanup&#39; if it was interrupted“

今天在 通过 SVN 合并代码的时候报了如下的错误 "Previous operation has not finished; run 'cleanup' if it was interrupted",无论尝试什么操作都是报相同的错误,遂在网上找了资料查了一下,问题解决了,记录一下问题解决的方法. 1.下载  sqlite 内嵌数据库管理工具 sqlite3.exe 2.将sqlite3.exe 放置于SVN 项目的.svn 文件内,如图 3.删除 sqlite 数据库中的操作队列表

svn web页面svn up报错

今天程序员找到我说svn web界面中svn up 报错,于是我马不停蹄的去看了下确实报错, 我就看了下日志果然报了很多错误根据最后一条判断----------------------------------------------------------------------- ATTENTION!  Your password for authentication realm: <http://10.15.200.30:80> product svn can only be stored

myeclipse关于svn更新报错:OPTIONS of &#39;/svn/Xxx&#39;: 403 Forbidden

这个问题出现原因是其他人修改了我原本写作的代码位置,把两个类转移到了别的文件夹,我更新之后只显示除了他增加的文件夹而没有里面的类,同时爆出错误: 问题原因:svn版本号不匹配,即跳版本. 解决如下:replace with --> 分支/标记 替换成最新版本即可. 借鉴网址:http://blog.sina.com.cn/s/blog_5ec46fd80102uwph.html myeclipse关于svn更新报错:OPTIONS of '/svn/Xxx': 403 Forbidden

SVN cleanup 报错,清除svn的工作队列

SVN 提交报错, Team->cleanup还是报错: Can't install '*' from pristine store, because no checksum is recorded for this file 这时需要清除一下svn的工作队列: 1.安装sqlite3(windows 下按实际位数下载 sqlite-dll-win*.zip 和 sqlite-tools-win*.zip,下载地址:http://www.sqlite.org/download.html) 2.将

SVN Cornerstone 报错信息 xcodeproj cannot be opened because the project file cannot be parsed.

svn点击update 之后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened becausethe project file cannot be parsed. 发现项目中代码全没了.只有一个空的工程名字,因为xcodeproj工程文件冲突了,然后就是svn强制给你更新了,内部的文件冲突了,你们改了同样的地方的一段代码,可能是你们只是多加了一个空格,或者你们都加了代码,或者都是把对方的删了,自己又加的.所有svn不知道你们谁的对,到底听你们谁的

SVN更新报错

将服务器SVN文件更新到本地是出现下图错误 报错中已经提示可以通过clean up来清理,若直接执行release lock,则不会解决问题. 原因:本地的项目中存在过期的工作副本 解决办法:选择该文件夹右键TortoiseSVN ->clean up,然后再执行更新即可

centos7编译安装LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常见问题报错及解决方法

LNMP的安装与配置 nginx-1.16.0安装及配置: 第一步:前往官网下载nignx源码包 下载完毕后上传至服务器(先安装lrzsz) yum -y install lrzsz 安装完毕后执行: rz 找到nginx包后点击确定,即可上传成功 第二步: 解压: tar zxvf nginx-1.16.0.tar.gz 进入: cd nginx-1.16.0/ 创建用户.用户组: groupadd nginx useradd -g nginx nginx -s /sbin/nologin 第

Windows SVN启动报错

解决方法(先不要关闭安装弹出的错误窗口): #启动VisualSVN Server报错提示Service 'VisualSVN Server' failed to start解决办法 1,运行:services.msc,打开服务器管理器,找到"VisualSVNServer": 2,点击右键--属性,打开"登录"选项卡.将"此帐户"改成"本地系统帐户".再回到安装程序弹出窗口处,选择"OK"即可:

关于把代码提交至SVN管理报错的问题

在代码没有提交之前你的Java类右下角会有个?号,提交之后就会消除.有时候代码Commit的时候会报钩子阻塞的错误,主要原因有两个: 1.comment没有填写,必须填写Jira里面的Key 2.你的代码写错地方了,与你的Jira里面的安排的模块不一致,把代码放置正确的位置即可 SVN是代码管理工具,如果是全新的文件就直接commit,如果仅仅是在原有文件基础上改动的话就选择synchronized with repository(同步) Marven是管理类库的工具,我们代码里面所有依赖(除了

SVN提交报错"Commit blocked by pre-commit hook"的解决办法

[问题] Linux命令行下用 svn commit -m "XXX" 的方式提交代码改动,失败.错误提示如下: Transmitting file data .svn: Commit failed (details follow):svn: Commit blocked by pre-commit hook (exit code 1) with output:False [] range "\w-" in regex; marked by <-- HERE