svn:将trunk与没有版本控制历史记录的文件合并

时间:2011-02-17 15:37:57

标签: svn merge branch

我正在开发一个版本控制方面,而不是组织良好的项目。我在版本控制(svn)下拥有自己的程序版本;但是,我的老板不使用版本控制,因此没有共享存储库。他对他的程序版本进行了一些更改,现在他让我将这些更改合并到我的版本中 - 手动操作会非常麻烦,所以我想也许我可以将他的所有文件保存为我工作的一个分支并让svn做合并(我以前从未合并过任何东西,我实际上并不太了解svn我害怕...)。麻烦的是,所有svn似乎都在复制我的老板添加到他的版本中的文件,但似乎没有对他在他的程序版本中更改的源代码文件副本进行任何更改。

嗯,这就是我所做的(在线教程之后):

  1. 我检查了我的主干的新工作副本和一个新创建的分支(其中包含我刚刚从我老板的目录中复制的文件)。我想也许这比使用我通常使用的工作副本更安全,因为我真的不知道我在做什么......
  2. cd已加入我新创建的trunk工作副本;在那里我进入了
  3. svn merge file:///home/user/svn/repository/branches/the_new_branch

    我得到了这个输出:

    --- Merging r8 through r27 into '.': 
       C macro/forall.mcr
    A    macro/upscale.mcr
       C macro/sbond.mcr
    ...
    Summary of conflicts:
      Tree conflicts: 429
    

    现在,我想知道是否/如何获得已执行的确切更改的摘要(例如,哪些源代码行 - 如果有的话 - 已更改),以及仅添加了没有的文件之前一直在那里,我如何让svn也检查文件的内容并在该级别上执行合并。

    如果这里的任何人都可以帮助我,那将是非常好的,所以非常感谢提前!

    编辑:我正在使用Linux。

2 个答案:

答案 0 :(得分:1)

回顾:如果使用Windows,使用WinMerge进行手动合并可能是您最好的选择。

下一次:

  • 查看本地副本,称之为'Boss'
  • 从'老板'出口并给他那个来源
  • 继续处理自己的签出副本
  • 当老板改变完成后,将它们复制到Boss
  • 更新'Boss'
  • checkin'Boss'

你已经完成了。

答案 1 :(得分:0)

我会像你的老板做了一个功能分支一样,然后将这个功能分支合并到你的主干:

尝试找出你的老板开始做出改变的主干版本(让我们说它的修订版1000)。

然后从此修订版创建一个分支,并将您的工作副本切换到该分支。

现在用老板项目中的文件替换此工作副本中的文件。您可以使用WinMerge或等效程序以递归方式汇总目录,并查找哪些文件是新的,已修改,已删除或未更改。

将更改提交给分支。

然后,将从trunk到branch的更改从1000开始合并到HEAD。这是您必须解决冲突的地方。完成后,功能分支将包含您所有老板的所有更改,并且与主干保持同步。

现在你可以将功能分支重新集成到主干中,如果他继续不使用版本控制,就会威胁你的老板杀死他。