我们刚刚在工作中迁移到SVN,我推动了Mercurial,但是因为没有其他人在这里工作而被拒绝了。
我当前的任务要求我从定制的C ++构建系统中破解生活垃圾,以使其与新的源代码控制系统很好地协同工作。这将需要对代码库进行大规模更改。
我正在努力实现的工作流程是:
很高兴可以定期从trunk更新我的工作分支,但是对于这个项目来说,这不是必需的,因为我是唯一一个处理这段代码的人。
以下是我在实现此工作流程时遇到的问题。
我们的SVN存储库结构如下:
SVN
\_ Project1
\_ trunk
\_ branches
\_ tags
\_ shelves
\_ dev1
\_ dev2
\_ Project2
. . .
\_ Project3
. . .
项目2和3具有与项目1相同的目录结构。我们创建了shelf目录,希望开发人员能够以与使用Git或Mercurial相同的方式进行分支和提交以协助开发。不幸的是,我认为这无法使用SVN。问题是,一旦将东西提交给SVN,其他用户就无法忽略它。因此,如果我在Project1-> shelf-> Dev1下创建2或3个正在进行中的工作分支,则下次其他任何人更新项目1或整个存储库的工作副本时,它需要血腥的年龄,因为他们必须等待每一个要下载的新分支。每个新分支大约需要5分钟更新,因此有六个开发人员每天创建一个或多个正在进行的新工作分支,这是完全不可行的。
如果每个开发人员都可以在本地配置SVN,以忽略其他开发人员正在进行的私有工作分支目录,那将是完美的,但似乎根本无法做到这一点。
我的另一个研究途径是考虑使用Mercurial或Git直接从SVN结账(Mercurial使用hgsubversion和Git使用git-svn)。这两种方法都具有复杂性,这些方法是将开发分支合并到需要提交给SVN的分支中,但尽管这种方法具有复杂性,但仍然有一些希望。在那之前,我做了一些测试,发现无论是hgsubversion还是git-svn都没有注意到任何SVN文件的外部因素,而且我也遇到了一些文档,这些文档暗示在Git中文件重命名/移动不会在SVN中正确提交,即文件历史记录将丢失,这是不可接受的。
现在我正在看的是这个。
必须有更好的方法。请有人帮我找到它!!
答案 0 :(得分:1)
通常你不会像那样检查整个存储库 - 你只检查你正在处理的分支(并使用svn开关在分支之间移动)