svnmergediff文件|怎么用ubuntu中的命令读取svn中的文件

❶ 请教SVN服务器的问题

你看到只是最初的版本·你下载下来的时候·服务器会把最新的更新下来的。每更新一次,都有一个不同的版本号,当你操作失误时,可以在服务器上根据上次提交的版本号给下载下来。

❷ 怎么用ubuntu中的命令读取svn中的文件

1、将文件checkout到本地目录svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co2、往版本库中添加新的文件 svn addfile 例如: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 ci4、加锁/解锁 svn lock -m "LockMessage"[–force] PATH 例如:svn lock -m "lock test file" test.phpsvn unlock PATH5、更新到某个版本 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 up6、查看文件或者目录状态 1)svn status path(目录下的文件和子目录的状态,正常状态不显示) 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v path(显示文件和子目录状态) 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。简写:svn st7、删除文件 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、查看日志 svn log path 例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化9、查看文件详细信息 svn info path 例如:svn info test.php10、比较差异 svn diff path(将修改的文件与基础版本比较) 例如:svn diff test.phpsvn diff -r m:n path(对版本m和版本n比较差异) 例如:svn diff -r 200:201 test.php 简写:svn di11、将两个版本之间的差异合并到当前文件 svn merge -r m:n path 例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)12、SVN 帮助 svn helpsvn help ci——————————————————————————以上是常用命令,下面写几个不经常用的——————————————————————————13、版本库下的文件和目录列表 svn list path 显示path目录下的所有属于版本库的文件和目录简写:svn ls14、创建纳入版本控制下的新目录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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

❸ 如何在MAC环境下使用svn,以及新手在团队使用svn注意事项

1、Xcode4中苹果有自带的SVN软件——>Organizer——>Repositories2、SVN checkout到本地后,删除本地file,对服务器有影响吗? 不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。 3、连接服务器点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。4、Xcode4下,SVN中常用命令 Commit 提交 checkout 将服务器上下载到本地(我个正在使用的电脑) update 更新文件 File——->SourceController——->update 图片中第3个按钮,是视图对比按钮. 5、SVN中用法详解和注意事项 ①提交自己的代码 SVN更新的原则是要及时更新,及时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,尽量早的提交,这样也保存了历史版本,必要时候可以回滚;在开始一天的工作之前,最后update一下项目。 ②保持原子提交(不要不经意间修改并提交了别人的文件) 仅提交你修改的部分,最好不要一下子将整个项目提交; 当完成一个功能或文件后,最好提交。我就遇到完成某个功能后,没有提交,后来又做了更改,结果代码出现bug,无法恢复到正常时的代码。 ③不要提交自动生成的文件 VisualStudio等开发工具在生成过程中会产生很多自动文件,如.suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要从仓库中删除。 ④不要提交不能通过编译的代码 代码在提交之前,首先要确认自己能够在本地编译。进行SVN提交更新时最好是代码在提交前已经通过自己的测试。 SVN中常用命令详解 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) 3、删除文件 svn delete path -m “delete test fle“ 例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile” 4、查看日志 svn log path 5、比较差异 svn diff path(将修改的文件与基础版本比较) 6、将两个版本之间的差异合并到当前文件 svn merge -r m:n path SVN使用方法 更新(update),经常地update没有坏处,特别是多人项目中。如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。 提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。 将文件checkout到本地目录 svn checkout path(path是服务器上的目录) svn update命令自动用服务器上的版本替换本地版本控制的文件 6、Xcode中使用SVN问题以及提交解决冲突问题 Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。 我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。 但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即project.pbxproj文件的提交冲突问题。 project.pbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。 如果项目成员提交了新的project.pbxproj文件,你这边没有在项目中增加新的文件,直接svn update就可以了。 7、Xcode中更新代码后项目文件打不开 若选择更新整个项目经常会出现冲突问题,尤其是project.pbxproj文件。此文件包含了构建过程所需的所有文件,如果在项目目录下增加了新文件,但没有通过Xcode, 该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果从SVN中更新到其他项目成员增加的文件, 而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。这一文件冲突将直接导致项目文件打不开。 解决更新代码后打不开项目文件方法: 当项目文件如tobacco.xcodeproj打不开时可以右键选择'显示包内容',会看到有三个文件,project.pbxproj/user.modelv3/user.pbxuser。 其中project.pbxproj有三个版本,和解决普通svn文件冲突一样解决冲突即可。8、SVN 更新 提交 合并 区别 当本地文件没有改动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件 当本地文件有改动,服务器文件没改动的话,不会更新此文件 当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,会提示文件冲突,需要自己手动修改以后上传到服务器。 最后一个讲解合并: 服务器和本地的同一个文件(所谓同一个文件应该就是SVN相对路径相同,文件名相同的文件,这个由SVN留在本地的信息决定)已经修改,且修改的部分不重合,不重叠 当满足上面的条件的时候再更新,SVN就会自动合并 SVN的奥妙之处就在于别人提交了修改后的文件,你再提交你的话,他是不允许你提交滴。。。 >>>> <<< 里面标记的是冲突的区域,把冲突区域删除掉为什么还不能提交 解决办法1: 删掉的话还是没有解决冲突,文件后面还会有几个文件名相同,但是后缀不同的文件 如果你不知道用SVN解决冲突的话,最简单的办法是这样的 把这个文件改名字,然后在文件所在目录更新,这样就会把服务器文件下下来,然后把自己修改的部分添加到更新的文件里面,这样就可以提交了 解决办法2: 在文件上面点击右键,到SVN的菜单,应该有编辑冲突的按钮,选择就会出现一个窗口,一边是服务器版本,一边是自己修改的版本 。 9、xcode自带svn的使用 1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit. (右键该文件 -> source control -> commit selected file…) 2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit. (右键该文件 -> source control -> commit selected file…) 3、代码中 某文件后面有 “?” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit. (右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit).

❹ 如何在mac使用终端更新svn

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

❺ svn的一些基本的操作!!!

一、将版本库中的资源签出到本地工作区。首先,在本地硬盘中创建一个新的空文件夹,例如e: proj_trunk。右键单击文件夹并选择签出选项,如下图所示:

❻ svn 的diff命令

show log吧,过滤条件使用版本,或者时间,然后加上add,即得到指定时间之间所有add的文件列表,diff是针对文件的。

❼ SVN常用命令及例句

1、linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、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 ci 4、Linux命令行下的加锁/解锁 svn lock -m “LockMessage“ [–force] PATH 例如:svn lock -m “lock test file“ test.php svn unlock PATH 5、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 st 7、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.php 10、Linux命令行下比较差异 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、Linux命令行下将两个版本之间的差异合并到当前文件 svn merge -r m:n path 例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 12、Linux命令行下SVN 帮助 svn help svn help ci 以上是常用命令,下面写几个不经常用的 13、Linux命令行下版本库下的文件和目录列表 svn list path 显示path目录下的所有属于版本库的文件和目录 简写:svn ls 14、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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)以上是Linux命令行下常用svn命令的使用方法。

❽ svn产生diff文件怎么命令

svn cat — 显示特定版本的某文件内容。svn list — 显示一个目录或某一版本存在的文件列表。svn log — 显示svn 的版本log,含作者、日期、路径等。svn diff — 显示特定修改的行级详细信息。

❾ 在linux下如何下载svn上的文件

linux下载svn客户端就可以使用命令下载文件。 1、将文件checkout到本地目录 svn checkout path(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 m path 例如: svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先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://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、查看日志 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:205 test.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 可以再次提交。

❿ svn如何解决分支冲突

1、 如何产生冲突当开发人员A和开发人员B从版本库同时检出文档1.txt,而A和B同时修改了1.txt的同一地方,后提交的一方会在拷贝副本中产生冲突。两个工作拷贝,A拷贝中文件1.txt内容为dfqerq 123dfwreB拷贝中文件1.txt内容为dfqerq 123erwrq在B版本提交之前版本库上的1.txt(base版本)内容为dfqerqB拷贝先提交版本到版本库中,以至于最新版本内容变为dfqerq 123erwrq此时A版本也提交则会产生冲突,无法提交,需要先svn update,此时会在A拷贝中产生三个临时文件1.txt.rNew\1.txt.rOld\1.txt.mine,其中1.txt.rNew是最新版 本,1.txt.rOld是base版本,1.txt.mine是A作者修改后的版本,在此例中内容为dfqerq 123dfwre而update之后A拷贝中的1.txt内容为<<<<<<< .mine dfqerq 123dfwre======= dfqerq 123erwrq>>>>>>> .r18其中<<<<<<< .mine与=======之间表示A修改后的内容,=======与>>>>>>> .r18之间是版本服务器上的版本2、解决冲突第一种,利用update的选项进行冲突解决,也就是说不管当前拷贝副本是否是最新版本,都使用—accept参数作为冲突处理方式–accept ARG : specify automatic conflict resolution action (‘postpone’, ‘base’, ‘mine-conflict’, ‘theirs-conflict’, ‘mine-full’, ‘theirs-full’, ‘edit’, ‘launch’)(p) postpone – mark the conflict to be resolved later //让文件在更新完成之后保持冲突状态。 (df) diff-full – show all changes made to merged file //使用标准区别格式显示base修订版本和冲突文件本身的区别。 (e) edit – change merged file in an editor //用你喜欢的编辑器打开冲突的文件,编辑器是环境变量EDITOR设置的。 (r) resolved – accept merged version of file //完成文件编辑之后,通知svn你已经解决了文件的冲突,它必须接受当前的内容—从本质上讲就是你已经“解决了”冲突。 (mf) mine-full – accept my version of entire file (ignore their change//丢弃新从服务器接收的变更,并只使用你查看文件的本地修改。 (tf) theirs-full – accept their version of entire file (lose my changes)//丢弃你对查看文件的本地修改,只使用从服务器新接收的变更。 (l) launch – launch external tool to resolve conflict//启动一个外置程序来执行冲突解决,这需要一些预先的准备。 (h) help – show this list //显示所有在冲突解决时可能使用的命令。第二种,在update时并不处理冲突,利用svn resolve解决冲突1、利用svn resolve –accept base选择base版本,即1.txt.rOld作为最后提交的版本–accept ARG : specify automatic conflict resolution source (‘base’, ‘working’, ‘mine-conflict’, ‘theirs-conflict’, ‘mine-full’, ‘theirs-full’)2、手工修改1.txt文件,然后将当前拷贝即1.txt作为最后提交的版本svn resolve –accept working 1.txt3、svn resolve –accept theirs-full 1.txt 使用1.txt.rNew作为最后提交的版本4、svn resolve –accept mine-full 1.txt 使用1.txt.mine作为最后提交的版本5、svn resolve –accept mine-conflict 1.txt 使用1.txt.mine的冲突部分作为最后提交的版本5、svn resolve –accept theirs-conflict 1.txt 使用1.txt.rNew的冲突部分作为最后提交的版本第三种,使用svn revert取消变更(以上文章来源:http://blog.sina.com.cn/s/blog_65fd4c1e0100h2cg.html)-----前两天在解决冲突时用到了svn resolve这个命令,找到这篇文章主要是因为他对–accept参数的说明比较全比官方的文档更详细。svn文件冲突,树冲突详解 解决冲突偶尔,当你从版本库更新、合并文件时,或者切换工作副本至一个不同的 URL 时你会遇到冲突。有两种冲突:文件冲突当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。树冲突当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。文件冲突当两名或更多开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。由于 Subversion 不知道你的项目的具体情况,它把解决冲突的工作留给了开发人员。一旦出现冲突,你就应该打开有问题的文件,查找以字符串<<<<<<<开头的行。有冲突的区域用如下的方式标记:<<<<<<< 文件名 你的修改 ======= 合并自版本库中的代码 >>>>>>> 版本对于每个冲突的文件 Subversion 在你的目录下放置了三个文件:文件名.ext.mine这是你的文件,在你更新你的工作副本之前存在于你的的工作副本中——也就是说,没有冲突标志。这个文件除了你的最新修改外没有别的东西。文件名.ext.r旧版本这是在你更新你的工作副本之前的基础版本(BASE revision)文件。也就是说,它是在你做最后修改之前所检出的文件。文件名.ext.r新版本这个文件是当你更新你的工作副本时,你的 Subversion 客户端从服务器接收到的。这个文件对应于版本库中的最新版本。你可以通过TortoiseSVN → 编辑冲突运行外部合并工具/冲突编辑器,或者你可以使用任何别的编辑器手动解决冲突。你需要冲定哪些代码是需要的,做一些必要的修改然后保存。然后,执行命令TortoiseSVN → 已解决并提交人的修改到版本库。需要注意的是已解决命令并不是真正的解决了冲突,它只是删除了filename.ext.mine和filename.ext.r*两个文件,允许你提交修改。如果你的二进制文件有冲突,Subversion不会试图合并文件。本地文件保持不变(完全是你最后修改时的样子),但你会看到filename.ext.r*文件。如果你要撤消你的修改,保留版本库中的版本,请使用还原(Revert)命令。如果你要保持你的版本覆盖版本库中的版本,使用已解决命令,然后提交你的版本。你可以右击父文件夹,选择TortoiseSVN → 已解决…,使用“已解决”命令来解决多个文件。这个操作会出现一个对话框,列出文件夹下所有有冲突的文件,你可以选择将哪些标记成已解决。树冲突当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。有很多种不同的情形可以导致树冲突,而且不同的情形需要不同的步骤来解决冲突。当一个文件通过 Subversion 在本机删除后,文件也从本机文件系统中删除。因此即使它是树冲突的一部分,却既不能显示冲突的叠加图标也不能通过右键单击来解决冲突。使用检查修改对话框来获得编辑冲突选项。TortoiseSVN 能够协助找到合并更改的正确位置,但是需要作一些额外的工作来整理冲突。请牢记: 当进行一次更新操作后,工作副本的基础文件将会包括每一个项目在执行更新操作时版本库中的版本。如果你在进行更新后再撤销更改,工作副本将返回到版本库的 状态,而不是你开始进行更改前的状态。本地删除,当更新时有更改进入开发人员 A 修改 Foo.c 并将其提交至版本库中开发人员 B 同时在他的工作副本中将文件 Foo.c 改名为 Bar.c,或者仅仅是删除了 Foo.c 或它的父文件夹。更新开发人员 B 的工作副本会导致树冲突:在工作副本中,Foo.c 被删除了,但是被标记为树冲突。如果冲突是由于更改文件名引起的而不是删除文件引起的,那么 Bar.c 被标记为添加,但是其中却不包括开发人员 A 修改的内容。开发人员 B 现在必须做出选择是否保留开发人员 A 的更改。在更改文件名的案例中,他可以将 Foo.c 的更改合并到改名后的文件 Bar.c 中去。对于删除文件或文件夹的案例中,他可以选择保留包含开发人员 A 更改内容的项目并放弃删除操作。或什么也不做而直接将冲突标记为已解决,那样他实际上丢弃了开发人员 A 的更改。如果 TortoiseSVN 能够找到被改名为 Bar.c 的原始文件,冲突编辑对话框将可以合并更改。这取决于在什么地方调用更新操作,它也许不能找到原始文件。本地更改,当更新时有删除进入开发人员 A 将文件 Foo.c 改名为 Bar.c 并将其提交至版本库中。开发人员 B 在他的工作副本中修改文件 Foo.c。或者在一个文件夹改名的案例中…开发人员 A 将父文件夹 FooFolder 改名为 BarFolder 并将其提交至版本库中。开发人员 B 在他的工作副本中修改文件 Foo.c。更新开发人员 B 的工作副本会导致树冲突。对于一个简单的文件冲突:Bar.c 被当作一个正常文件添加到工作副本中。Foo.c 被标记为添加(包括其历史记录)并且产生树冲突。对于一个文件夹冲突:BarFolder 被当作一个正常文件夹添加到工作副本中。FooFolder 被标记为添加(包括其历史记录)并且产生树冲突。 Foo.c 被标记为已修改。开发人员 B 现在需要做出决定是否接受开发人员 A 作出的结构改变并且合并她的更改到新结构下适当的文件中,或者直接放弃开发人员 A 的更改并保留本地文件。要合并她的本机更改到新布局中,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以使用日志对话框来完成这个任务。更改必须要手工合并,因为没有办法自动的或者简单的完成此操作。一旦更改移植完毕,冲突的路径就是多余的并且可以删除。在此案例中,使用冲突编辑对话框中的删除按钮进行清理并将冲突标记为已解决。如果开发人员 B 认为 A 的更改是错误的,那么在冲突编辑对话框中她必须选择保留按钮。这样就会标记冲突的文件/文件夹为已解决,但是需要手工删除开发人员 A 的更改。又是通过日志对话框帮助追踪哪些文件移动了。本地删除,当更新时有删除进入开发人员 A 将文件 Foo.c 改名为 Bar.c 并将其提交至版本库中。开发人员 B 将文件 Foo.c 改名为 Bix.c更新开发人员 B 的工作副本会导致树冲突:Bix.c 被标记为添加(包括其历史记录)。Bar.c 被添加到工作副本中,其状态为‘正常’。Foo.c 被标记为删除并且产生一个树冲突。要解决这个冲突,开发人员 B 必须找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以使用日志对话框来完成这个任务。然后,开发人员 B 需要决定 Foo.c 的新文件名中的哪一个需要保留 – 开发人员 A 改的那个还是他自己改的那个。在开发人员 B 手工解决冲突后,使用冲突编辑对话框中的按钮将树冲突标记为已解决。本地缺少,当合并时有更改进入开发人员 A 在主干上工作,修改 Foo.c 并将其提交至版本库中开发人员 B 在分支上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:Bar.c 已经存在于工作副本中,其状态为‘正常’。Foo.c 被标记为缺少并产生树冲突。要解决这个冲突,开发人员 B 要在冲突编辑对话框中标记文件为已解决,这样就会将其从冲突列表中删除。她接下来需要决定是否将缺少的文件 Foo.c 从版本库中复制到工作副本中,是否将开发人员 A 的对 Foo.c 的更改和合并到改名后的 Bar.c 或者是否通过标记冲突为已解决来忽略更改什么事也不做。注意,如果你将缺少的文件从版本库中复制到工作副本中然后再标记为已解决,你复制下来的文件将被再次删除。你必须先解决冲突。本地更改,当合并时有删除进入开发人员 A 在主干上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中开发人员 B 在分支上工作,修改 Foo.c 并将其提交至版本库中当文件夹改名时有类似的案例,但是在 Subversion 1.6 中还未被识别…开发人员 A 在主干上工作,将父文件夹 FooFolder 改名为 BarFolder 并将其提交至版本库中。开发人员 B 在分支上工作,在她的工作副本中修改 Foo.c 。合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:Bar.c 被标记为添加。Foo.c 被标记为修改并产生树冲突。开发人员 B 现在需要做出决定是否接受开发人员 A 作出的结构改变并且合并她的更改到新结构下适当的文件中,或者直接放弃开发人员 A 的更改并保留本地文件。要合并她的本机更改到新布局中,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以通过适用于合并源码的日志对话框来完成这个任务。冲突编辑器仅显示工作副本的日志因为它不知道将哪个路 径的更改合并进来,所以你需要自己找到它。更改必须要手工合并,因为没有办法自动的或者简单的完成此操作。一旦更改移植完毕,冲突的路径就是多余的并且可 以删除。在此案例中,使用冲突编辑对话框中的删除按钮进行清理并将冲突标记为已解决。如果开发人员 B 认为 A 的更改是错误的,那么在冲突编辑对话框中她必须选择保留按钮。这样就会标记冲突的文件/文件夹为已解决,但是需要手工删除开发人员 A 的更改。又是通过日志对话框帮助追踪哪些文件移动了。本地删除,当合并时有删除进入开发人员 A 在主干上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中开发人员 B 工作在分之上,将 Foo.c 改名为 Bix.c 并将其提交至版本库中合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:Bix.c 被标记为正常(未修改)状态。Bar.c 被标记为添加(包括其历史记录)。Foo.c 被标记为缺少并且产生树冲突。要解决这个冲突,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以通过适用于合并源码的日志对话框来完成这个任务。冲突编辑器仅显示工作副本的日志因为它不知道将哪个路径的更改合并进来,所以你需要自己找到它。然后,开发人员 B 需要决定 Foo.c 的新文件名中的哪一个需要保留 – 开发人员 A 改的那个还是他自己改的那个。在开发人员 B 手工解决冲突后,使用冲突编辑对话框中的按钮将树冲突标记为已解决。


赞 (0)