我是新手,所以请保持温和。
我们在工作中使用subversion来跟踪我们从另一个实体收到的相当大的软件项目的变化。但是,因为我们从不分支我们的软件,所以我们没有遵循传统的trunk / tags / branches层次结构的概念。我们只需使用以下命令创建存储库:
svnadmin create /data/svn/projectName
然后在服务器上svn import src svn:// svnserver / projectName -m“First Import” 在客户端上,我们检查一个工作目录。
但是,现在我想在各种软件版本中添加标记。我试图在以下几个链接重构存储库:
http://grand-prismatic.blogspot.com/2013/08/add-trunk-tags-branches-directory.html
但也许我不明白他们在做什么。我认为trunk / branches / tags目录是存储库结构的一部分,但不是源代码的物理结构的一部分。当我按照上面的链接时,我会在我的工作副本中找到标签/分支/主干目录,这是我不想要的。
我是否误解了标签和分支的功能?有没有办法将标签目录添加到存储库而不必显示在我的工作副本中?
答案 0 :(得分:1)
您无需查看tags目录。通常,您将使用主干下的内容或您的某个分支下的内容。您可以将存储库的任何部分(主干说,或者主干中的一个目录)签出到您的工作目录。
tags目录的内容将是trunk或任何分支的“标记”或纪元版本。例如,当测试版本并准备好从trunk或分支到copy目录的副本时,它将在发布时保存所有正确的版本。
不强制执行目录名称trunk,tags,branch。你可以随心所欲地打电话给他们。惯用法最好使用这些名称,因为当您引用svn命令时,解释将与您的svn设置相关联。如果你永远只能有一个码流(主干),从来没有偏离分支的项目代码,你永远需要作出的特定版本的标签,你可以简单地使用一个目录来存放在SVN库中的所有版本。< / p>
此命令将branch1签出到您指定的目录(/ branch1-srcdir):
svn co SVN-URL/branch1 /branch1-srcdir
或类似于trunk:
svn co SVN-URL/trunk /trunk-srcdir
答案 1 :(得分:1)
这就是Subversion的工作原理。您可以通过检查分支或切换到分支来使用分支。
REPO_ROOT
├── branches
│ ├── feature1
│ └── feature2
├── tags
└── trunk
您不想结帐REPO_ROOT。您想要签出子目录,例如/trunk
或/branches/feature1
。您可以切换到不同的分支:
svn switch ^/branches/feature2
您可以从主干创建一个新分支,如下所示:
svn cp ^/trunk ^/branches/newfeature
这并不意味着文件在存储库中重复。新分支有点像文件系统中的符号链接,因为它不会复制任何东西,但Subversion有自己的方法来提高效率。
如果您签出整个REPO_ROOT,内部存储库结构将作为常规文件系统在您的计算机上重新创建,这将是巨大的。人们不会这样使用Subversion。您总是要签出要使用的分支机构。
<强>更新强>
创建仓库时,它将具有如下物理目录结构:
$ svnadmin create myrepo
$ tree myrepo/ -L 1
myrepo/
├── conf/
├── db/
├── format
├── hooks/
├── locks/
└── README.txt
这与版本控制下的结构,/trunk
,/branches
,/tags
布局无关。新存储库完全空白:
# this outputs nothing
svn ls file://$PWD/myrepo
/trunk
,/branches
,/tags
布局只是一种惯例。如果您决定使用它,则必须自己创建布局,例如:
$ svn checkout file://$PWD/myrepo mycheckout
Checked out revision 0.
$ cd mycheckout/
$ mkdir -v trunk branches tags
mkdir: created directory `trunk'
mkdir: created directory `branches'
mkdir: created directory `tags'
$ svn add *
A branches
A tags
A trunk
$ svn commit -m 'created standard layout'
Adding branches
Adding tags
Adding trunk
Committed revision 1.
在此之后,我将删除mycheckout
目录,然后签出/trunk
并在另一次提交中添加项目文件。
此布局在myrepo
的物理目录中不可见。只有当您使用repo浏览器或使用svn ls URL
命令浏览repo内容时,它才会显示。
您可以在此处详细了解推荐的存储库布局:
http://svnbook.red-bean.com/en/1.7/svn.tour.importing.html#svn.tour.importing.layout