在创建存储库之后,为subversion存储库创建标记和分支

时间:2014-01-07 21:44:55

标签: svn version-control

我是新手,所以请保持温和。

我们在工作中使用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目录是存储库结构的一部分,但不是源代码的物理结构的一部分。当我按照上面的链接时,我会在我的工作副本中找到标签/分支/主干目录,这是我不想要的。

我是否误解了标签和分支的功能?有没有办法将标签目录添加到存储库而不必显示在我的工作副本中?

2 个答案:

答案 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