定义:
svn建议我们把目录建成trunk ,branch和tags,trunk是项目主干,branch放置分支,分支就是从主干的某个版本拷贝出来一个版本并继续在分支上进行开发的过程
命令:
svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/my-calc-branch \
-m "Creating a private branch of /calc/trunk."
该命令将主干复制到分支文件夹下,以便独立地在分支上进行独立的开发。
特性:
在分支上使用svn log 查看历史信息,只能看到在分支上修改的版本信息+创建分支前在主干上的版本变化信息。
在主干上使用svn log 只能看到主干上的版本变化信息。
创建一个分支对于svn来说是轻量级的,不需要进行文件的实际拷贝,对于svn来说,创建一个分支只是增加一些额外的版本信息。
合并:
既然有分支,就一定有合并,合并可以将某分支上作出的某些改动合并到其他的分支中
变化集合:
我们用一个版本号来表示整个树形目录,当有文件被修改目录被移动时,就用新的版本号表示当前的整个目录。我们也可以认为这个版本号代表了一个变化集合,这个变化
的集合就是当前的版本与之前一个版本之间所做的一切变化。svn log -r 9238可以查看9238版本,r代表range的意思,再通过diff -c 9238查看变化集合,svn merge -c 9238可以将9238这个变化集合合并入你的工作目录中。
与主干同步:
首先,你需要确认你的工作目录没有任何的本地修改存在,也就是说,执行svn status命令将看不到任何修改的记录。执行svn merge http://svn.example.com/repos/calc/trunk将把主干中的所有变化合并到当前工作目录中。你会发现出现了很多的修改文件,这时你应该通过svn diff来查看所有的修改。如果发现有重大的冲突问题无法解决,可以通过命令svn revert . -R来将本地合并的变化去掉,即恢复到原来。如果没有问题,可以通过命令svn commit -m "Merged latest trunk changes to my-calc-branch." 将变化提交。
合并回主干:
checkout出一个新的主干项目,然后使用命令svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-br 将分支合并回主干,检查没问题后,提交
svn commit -m "Merge my-calc-branch back into trunk!"