Chinaunix首页 | 论坛 | 博客
  • 博客访问: 590783
  • 博文数量: 98
  • 博客积分: 4045
  • 博客等级: 上校
  • 技术积分: 1157
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-31 16:56
文章分类

全部博文(98)

文章存档

2010年(7)

2009年(15)

2007年(73)

2006年(3)

我的朋友

分类: 项目管理

2009-09-11 18:03:08

1. 基本的工作周期:
更新你的工作拷贝
 $ svn update
作出修改
 $ svn add/delete/copy/move
检验修改
 $ svn status/diff/revert
合并别人的修改倒工作副本
 $ svn merge/resolved
提交你的修改
 $ svn commit

 

2. 在提交前需要做的动作:
$ svn status:
 
检查当前工作副本是否过期,另外可用svn diff查看细节。
$ svn update:
 
把其他人对代码做的修改,合并到你本机的副本。

 

3. 如果使用 svn rm 删除了不该删除的文件,如何进行恢复?
A 提交之前: $ svn revert PATH
B
提交之后: $ svn copy -r PREV SRC DST

 

4. 添加了不该添加的文件, 如何删除这些文件?
A
提交之前: $ svn revert PATH
B
提交之后: $ svn remove URL

 

5. 如果已经提交代码了,如何回滚到以前的版本
A.
上一版本:
 $ svn cat -r PREV filename > filename
 
注意这个时候文件的状态是M,也就是说你可以提交你的修改。
B.
较老版本:
 $ svn update -r NUMBER
 
但是
不能将这些工作路径内的修改提交到代码库中。

 

6. svn 不会将当前目录下的链接加入版本控制,这意味着:
 A.
如果您不想把某些目录/文件加入版本控制,那最简单的办法就是:
在其他地方建立目录,然把在你的svn工作目录下用软链接链到那个目录
但此时要是svn status,链接文件会有?提示。
 B.
如果发现 check out 出来的文件缺少东西,
那很可能是因为在import的时候,链接类的文件/目录没有提交。

 

7. 处理冲突
 
在使用 svn update 的时候,若出现如以C 开头的提示信息,
说明你在本地的修改和版本库中的版本修改的地方重叠了,
也就是说,你修改了某一行,你的同事也修改了同一行。
这个就需要你自己手工去解决了。

 

当冲突发生时,要注意到有三件事情可以帮助你解决问题:
A. Subversion
会给这个文件作出C标记。
B.
如果Subversion认为这个文件时可以合并的,它会一个冲突标记(特殊的横线来分开冲突的代码块)。
C.
对每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝。

 

filename.mine
    
你更新前的文件,没有冲突标志,只是你最新更改的内容。
    
(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)
filename.rOLDREV
    
这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。
filename.rNEWREV
      
这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。

 

要解决这个冲突,可以选择:
a.
手工合并冲突文件(检查和修改文件中的冲突标志)。
b.
用一个临时文件(三个中的一个)覆盖你的工作文件。
c.
运行svn revert 来放弃所有的修改。

 

一旦解决了你的冲突,需要通过命令svn resolvedsubversion知道并删除三个临时文件,这时才可以提交。

 

关于手工合并冲突,看看如下文本:
Mayonnaise
Lettuce
Tomato
Provolone
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
Sauerkraut
Grilled Chicken
>>>>>>> .r2
Creole Mustard

 

一连串的大于、小于、等于号是冲突标记,这些数据得全部删除才可以提交。其中,
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
是你在冲突区里面做的修改。

 

Sauerkraut
Grilled Chicken
>>>>>>> .r2
是别人在冲突区做的修改。

 

在冲突区中,或许你需要和你的同事沟通来安排冲突区的文本内容,
如果是程序代码,你需要和同事商量一下,中间的这段代码到底应该是什么样子的。
所有冲突区得到合理的解决之后,你就可以提交你的文件了。

 

阅读(1799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~