SVN更新时不能打开新文件svn-base系统找不到指定的文件

SVN更新时不能打开新文件svn-base系统找不到指定的文件,第1张

svn服务器架设在linux系统上,svn客户端在windows上,在update的时候可能会出现“Can't
open
file
XXXX/tmp/text-base/XXsvn-base
系统找不到指定的文件”的错误。
这是由于Linux服务器上的目标文件中存在两个相同文件名的文件。因为linux系统的文件名区分大小写,windows系统不区分文件名的大小写,例如readmetxt和ReadMetxt在linux系统上是两个不同的文件,但是在windows下将是同一个文件,当从linux服务器更新到windows上时,就会出现上述问题。
解决办法:
代码如下
TortoiseSVN
-->
Repo-Browser
在d出的窗口中,选择其中重名的文件之一,右键,delete,Ok

Commit!
重新update一下。
有朋友说可以这样处理,但没测试过
解决方案
A)(推荐)
1
提交你工作副本中的改变到版本
2
使用版本库的浏览器立即重命名该文件的大写(小写)为小写(大写)
3
更新你的工作副本
解决方案
B)
1
使用TortoiseSVN子菜单中的重命名命令将UPPERcase重命名为UPPERcase_
格式
2
提交该更改
3
将UPPERcase_重命名为upperCASE格式
4
提交该更改

svn info 查询svn根目录的信息,这个命令当你想知道某个svn目录是从哪个服务器上下来的时候特别有效
svn add 增加一个文件到更目录里,注意要用svn commit上传这个修改
svn status 查询当前目录下文件修改的情况,a表示增加,M表示修改
svn diff 查看本目录下所有的文件有哪些区别,当然可以指定到文件名。
svn commit -m "fix bug" file 上传某个文件的修改,并增加注释
svn ci 上传所有的修改,会提示你添加修改记录
svn log file 查询某个文件的修改记录
svn up 从服务器上更新本地代码
svn checkout从svn服务器上取出一个目录,带svn信息
svn export 从svn服务器上取出一个目录,仅源文件,没有讨厌的svn信息
svn revert回滚本地所有的未上传的所有修改,慎用,会覆盖本地所有的修改 *** 作。可一次回滚一个目录或者文件。
svn revert file --depth=infinity,回滚该目录下的所有文件
svn diff -r3 rulestxt 将本地的working目录下的文件和服务器的r3版本之间进行比较
svn diff -r 3:2 rulestxt 比较服务器上的r2版本和r3版本。

搭建环境跟svn是两码事

环境建议使用一些集成包,如phpnow等,几分钟就搞定环境了

SVN是版本控制软件,你先服务器安装配置好,需要设置一些project,还需要分配用户权限等。

然后客户端安装好就可以了

具体你百度下,教程很多的,扫一眼就知道了,没几个命令

mac 终端 svn 命令
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://19216811/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add testphp(添加testphp)
svn add php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" testphp
简写:svn ci
4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" testphp
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 testphp(将版本库中的文件testphp还原到版本200)
svn update testphp(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m "delete test fle"
例如:svn delete svn://19216811/pro/domain/testphp -m "delete test file"
或者直接svn delete testphp 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log testphp 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info testphp
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff testphp
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 testphp
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 testphp(将版本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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

用dos命令进入项目文件夹,运行svn cleanup;不要直接右键点击找cleanup选项。

SVN更新(SVN Update)及如何解决冲突文件

SVN update:

更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。

冲突文件的解决

1、对于每个冲突的文件Subversion在你的目录下放置了三个文件:如下:

2、 为什么会产生冲突呢?

原因很简单就是因为不同的人,同时修改了同一个文件的同一个地方,这时候,他提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成如上3个文件。

3、解决方案如下:

1) 首先我们可以看下1txt代码如下:

2) 然后我去掉多余的代码,1txt变成这样:

3)进行提交,还是提交不了,如下所示:

4)为什么?因为冲突会产生上面的三个文件,有上面3个文件存在肯定提交不了,这三个文件代码及解释如下:

4、新的解决方案:

前面说过  <<<<<<< mine …… =======
……之间的代码是我未产生冲突之前修改的代码,
======= ………>>>>>>> r16 这中间……的代码是别人与我冲突代码的部分,从上面的代码可以看到 aaaaaaaaa是我同事新增的 ,00000是我后增加的。  

1)使用revert(回滚) *** 作,该 *** 作表示用户放弃自己的更新代码,然后直接提交,这个时候你的代码就会使服务器上最新的代码,即A用户提交的新代码,你的代码不会被提交,如下所示:

2)点击ok按钮后 可以看到其他三个文件都自动删掉了,1txt代码变成如下代码:

也就是a用户提交的代码,我自己更新的代码需要自己动手复制进去即可提交commit。

具体步骤:
第一步,启动终端。命令如下:
svnadmin create /Users/Johnny/Repository
我在自己的主目录下建立了一个名为“Repository”的代码库。
第二步,配置这个代码仓库。终端中继续,命令如下:
cd /Users/Johnny/Repository/conf
首先修改svnserveconf文件,只要把
#password-db = passwd
这句话的#去掉,是这个配置项生效即可。保存退出。
接着修改passwd文件,这个里面存着这个代码库接受的用户名和密码
采用的形式是[用户名]=[密码]。可以增加一个用户“user”,密码“pass”
user=pass
保存退出。
第三步,启动服务器。终端中继续,命令如下:
svnserve -d -r /Users/Johnny/Repository
没有任何提示就说明启动成功了。
停止:killall -9 svnserve


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12582828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存