【问题标题】:Subversion best practices and cleanupSubversion 最佳实践和清理
【发布时间】:2011-12-24 19:36:30
【问题描述】:

我有一个计划不周的颠覆存储库。我想开始制作树枝。实际上,我真正想要的是“命名”已知的好版本,如果需要,我可以返回。似乎这是通过 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


    【解决方案1】:

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

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

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

    至于示例,我无法告诉您确切的命令和语法,但这里有一个从客户端执行此操作的快速大纲:

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

    如果你有一个像 TortoiseSVN 这样的 SVN 客户端,这应该很简单。

    【讨论】:

      【解决方案2】:

      安迪怎么说

      鉴于一切都在存储库的根目录下,在我看来最好的办法是从一个新的存储库开始,在根目录创建标准的树干/分支/标签/文件夹,将项目复制到树干/,标记它,然后继续使用新的存储库。

      从那时起,使用标签(而不是分支)来命名版本。当有人需要孤立地解决棘手的问题,或者做一些实验性的工作,或者有很多需要同行评审的更改并且你不想阻碍团队的其他成员时,分支是用于的。通常,人们在分支上工作一段时间,然后在某个阶段将它们与主干合并。相反,标签永远不会改变。

      #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等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-23
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多