创建项目仓库
# mkdir /home/victorwmh/svn-repos
# svnadmin create /home/victorwmh/svn-repos
创建项目
# svn import -m "importing Sesame project" /tmp/sesame file:///home/victorwmh/svn-repos/sesame/trunk
import关键字告诉subversion,将指定位置下的文件导入到项目仓库中。-m选项是给此次导入操作关联一条日志消息,说明此次操作的意图。/tmp/sesame告诉subversion导入该目录下的内容到项目仓库之中。最后一个参数是项目仓库的URL,描述了要把文件导入到哪儿去。
项目开发示例
文件签出(拷贝)
# svn co file:///home/victorwmh/svn-repos/sesame/trunk sesame
参数co告诉subversion要执行签出操作,file://URL指定想要签出的项目仓库的位置,sesame告诉subversion要把工作拷贝签出到哪儿,本例中的sesame表示将工作拷贝签出到当前目录下的sesame目录中。
查看文件状态
# svn status Day.txt
输出结果中的M表示这个文件本地被修改过了,而且这些改动没有被存储到项目仓库中去。
查看修改情况
# svn diff Day.txt
输出结果中包含大量信息,如项目仓库文件的名字和版本号,被修改信息的具体位置等。
更新项目仓库
# svn commit -m "Cliend wants us to work on weekends"
commit的功能是存储所有改动到项目仓库中,-m选项用来给所做的改动附加有意义的注释。
# svn log Day.txt
查看文件修改历史的日志,包含项目仓库中的版本号。
# svn log --verbose Day.txt
增加--verbose选项,subversion输出更多信息,会告诉你每个版本中具体哪些被改动了。
# svn update
当提交修改后立马询问当前目录的日志时,subversion不会告诉你有什么改动,输出的日志为截止上次提交的内容。如果要看到最新的日志信息,得先运行svn update。
命令执行后,如果有更新会输出一个包含两段内容的列表,前面一个是状态组合符,后面一个为文件目录名。
状态符及含义如下:
A、项目仓库中有新文件,subversion为了更新工作拷贝,添加了一个文件到其中。
U、工作拷贝中的文件过期,因为有一个更新的版本签入到项目仓库中。subversion已经把工作拷贝中的文件更新为新的版本。
D、该文件已从项目仓库中删除了,subversion把它从工作拷贝中移除了。
G、工作拷贝中的文件过期,而且你本地还做了修改。subversion成功的把项目仓库中的版本和你本地的修改合并到了一起。
C、工作拷贝中的文件过期,而且你本地也做了修改。subversion尝试着合并项目仓库的改动和你本地的修改,但遇到了冲突。你需要把这个冲突解决了之后才能签入。
冲突
# svn status --show-updates
使用--show-updates(简写-u)让subversion从项目仓库中找出当前目录下的文件是否有更新。
# svn diff -r HEAD Number.txt
使用-rHEAD选项让subversion比较Number.txt的本地拷贝与项目仓库中最新版本间的差别,没有指定-r标识subversion会把本地拷贝的Number.txt与项目仓库的签出版本拿来进行比较。如果项目仓库中有人更新了Number.txt,你得到的svn diff Number.txt输出仍然为空。
冲突一:A、B同时修改相同文件的不同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
# svn commit -m "modify message"
B提交修改前,需要执行svn update更新到仓库项目中的最新版本,不然冲突会导致提交失败。svn update命令会把本地的版本和项目仓库中的版本合并到一块。
冲突二:A、B同时修改相同文件的相同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
相同的修改冲突,在执行svn update命令后,修改冲突的地方会有一对<<<<<<< .mine和>>>>>>> .r5的标记,5为相应的版本号。修改好冲突后,执行以下命令。
# svn resolved Number.txt
resolved命令告诉subversion冲突已解决,Number.txt为冲突文件。
# svn commit -m "modify message"
(收起)