Subversion:合并(暂时)不受版本控制的文件

时间:2011-02-05 17:44:06

标签: svn merge

我发现自己经常与那些不是特别严格控制版本的人一起工作,所以如果我知道神奇的话,Subversion的以下用例将非常有用。

  1. 我提交了我的最新版本,请注意修订版R
  2. 我将一个文件通过电子邮件发送给协作者并继续工作,可能会在我去的时候进行更多更改
  3. 当我从协作者处获取文件时,我将R中的更改与他们的版本进行3向合并到我的工作副本中
  4. 看起来分支等对此有点重要,但我愿意接受任何有关完成工作的好方法的建议。

2 个答案:

答案 0 :(得分:3)

看起来@Martinho Fernandes给了你一个很好的答案,但我想指出Subversion中的分支根本不是重量级的。这是一种廉价,简单,恒定的时间和空间复制操作。使用分支可能会使该过程不易出错:

  1. 当您想要发送给您的贡献者时,svn cp将代码发送到新分支。如果您按照"canonical" repository structure进行操作,则会显示svn cp http://your-repository.com/trunk/ http://your-repository.com/branches/some-name
  2. (可选)使用svn export获取代码副本以提供给您的贡献者。
  3. 继续在行李箱中工作。
  4. 当您从贡献者那里获得代码时,请确保您已检入对trunk的任何更改,否则下一步将无法按预期工作。
  5. 从工作副本的根目录svn switch http://your-repository.com/branches/some-name
  6. 将您的贡献者代码复制到您的工作副本上并将其签入。
  7. svn switch http://your-repository.com/trunk
  8. 现在,您将最后一个分支提交中的更改合并到工作副本中。如果你不习惯它,这可能是最棘手的一步,但一旦你知道如何,它就非常简单。请参阅this documentation on merging开始使用。
  9. 我知道这似乎并不像使用分支和合并那么简单,但是一旦你掌握了它,你可能不会想要以任何其他方式执行此操作(至少使用Subversion)。

答案 1 :(得分:1)

可能有一个更简单的解决方案,但这应该有效:

  1. 从干净的工作副本开始(即没有本地更改)
  2. 返回您之前记录的修订版R(可能在电子邮件中的某处写入)
  3. 将协作者的已更改文件复制到工作副本@ R
  4. 中的文件上
  5. 更新到最新版本,合并您的更改
  6. 提交合并的更改