有两种方法可以将新文件引入Subversion版本库:svn import和svn add,现在讨论svn import
svn import是将未版本化文件导入版本库的最快方法,会根据需要创建中介目录。svn import不需要一个工作拷贝,你的文件会直接提交到版本库,这通常用在你希望将一组文件加入到Subversion版本库时,例如:
1)首先,服务器管理员在SVN服务器上创建项目版本库newrepos
$ svnadmin create /usr/local/svn/newrepos
2)然后,在客户端使用svn命令把本地文件导入到服务器上的项目版本库
$ svn import mytree file:///usr/local/svn/newrepos/some/project
Adding
Adding
Adding
Adding
Committed revision 1.
在上一个例子里,将会拷贝目录mytree到版本库的some/project下:
$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/
注意,在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,你还是需要运行svn checkout导出一个工作拷贝。
推荐的版本库布局
尽管Subversion的灵活性允许你自由布局版本库,但我们有一套推荐的方式,创建一个trunk目录来保存开发的“主线”,一个branches目录存放分支拷贝,tags目录保存标签拷贝,例如:
$ svn list file:///usr/local/svn/repos
/trunk
/branches
/tags
这将本地目录myproj
导入到版本库的trunk/misc
,trunk/misc
在导入之前不需要存在—svn import会递归的为你创建目录。
$ svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc Adding myproj/sample.txt … Transmitting file data ......... Committed revision 16.
需要知道这样不会在版本库创建目录myproj
,如果你希望这样,请在URL后添加myproj
:
$ svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc/myproj Adding myproj/sample.txt … Transmitting file data ......... Committed revision 16.
在导入数据之后,你会发现原先的目录树并没有纳入版本控制,为了开始工作,你还是要运行svn checkout得到一个干净的目录树工作拷贝。