Subversion最佳做法和清理

问题描述 投票:0回答:2

我有一个计划较差的Subversion存储库。 我想开始制作分支。 实际上,我真正想要的是“命名”的已知良好版本,如果需要的话,我可以回去使用。 看来这是通过svn分支完成的。

问题是我从来没有与任何像样的组织一起建立自己的Subversion存储库。 我没有存储库/主体,存储库/分支机构的结构。 一切都在我的存储库根目录中,并且我执行的唯一命令是add,delete,mv和ci。 现在,我已经达到了一个里程碑,我想为其添加标签或分支。

鉴于我没有做过任何组织工作,现在如何在我的存储库中建立分支以执行类似的命令?

svn cp svn://server.com/svn/repository/trunk \
  svn://server.com/svn/repository/branches/your_branch \
  -m "Branching from trunk to your_branch at HEAD_REVISION"

另外,由于我的源代码位于svn存储库的根目录中。 是否建议做家务或良好做法? 我是在客户端还是在服务器端?

初学者的问题。 请提供svn命令和示例。

svn code-organization
2个回答
4
投票

您可能应该查看命名版本的标签,而不是分支:

http://svnbook.red-bean.com/en/1.1/ch04s06.html

如果您的存储库仅包含与一个应用程序/项目相关的代码,那么最好创建一个主干目录并将当前拥有的所有内容移入其中。 然后在根级别上创建一个标记目录(用于标记)和一个分支目录(用于分支)。 这些都可以在客户端完成(如果您不介意额外的版本)。

至于示例,我无法告诉您确切的命令和语法,但是下面是从客户端进行此操作的简要概述:

  1. 检出存储库根目录
  2. svn mkdir中继,分支,标签(在根级别创建所需的目录)
  3. svn将所有现有文件和目录移动到中继
  4. svn提交您刚刚所做的更改
  5. 执行标记

如果您有像TortoiseSVN这样的SVN客户端,这应该非常简单。


0
投票

安迪说了什么

鉴于所有内容都在存储库的根目录下,对我来说,最好的想法是从一个新的存储库开始,在根目录下创建标准的trunk / branchs / tags /文件夹,将项目复制到trunk /,tag它,然后继续使用新的存储库。

从那时起,使用标记(而非分支)来命名发行版。 当有人需要孤立地处理棘手的问题或进行一些实验性工作,或者有许多变更需要同行评审并且您不想让团队的其他成员束手无策时,分支机构就可以使用。 通常,人们在分支上工作一段时间,然后在某个阶段将它们与主干合并。 标签永远不会改变。

#make a copy of the code - cleaning up all the hidden .svn directories
cd /pth/to/original/code
find .  \! \( -name . -or -name ".svn" -or -path "*/.svn/*" \) -print  | cpio -padv /pth/to/where/you/want/your/copy


#on svn server, create new repository
svnadmin create /path/to/svn/new_repo 
svn mkdir /path/to/svn/new_repo/trunk -m "add a comment"
svn mkdir /path/to/svn/new_repo/branches -m "add a comment"
svn mkdir /path/to/svn/new_repo/tags -m "add a comment"

#import the code into the new repository
svn import -m "Start again" /pth/to/where/you/want/your/copy http://svn.example.com/new_repo/trunk

#tag the initial milestone
svn cp http://svn.example.com/new_repo/trunk http://svn.example.com/new_repo/tags/my_milestone -m "Release 1.0"

您可能要对my_milestone使用语义版本控制,例如1.0.0等

© www.soinside.com 2019 - 2024. All rights reserved.