【问题标题】:svn: merge trunk with files that have no version control historysvn:将主干与没有版本控制历史的文件合并
【发布时间】:2011-02-17 15:37:57
【问题描述】:

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

好吧,这就是我所做的(按照在线教程):

  1. 我检查了我的主干的一个新工作副本和一个新创建的分支(其中包含我刚刚从老板的目录中复制的文件)。我想也许这比只使用我通常使用的工作副本更安全,因为我真的不知道自己在做什么......
  2. cd'ed 到我新创建的trunk 工作副本中;我在那里输入了

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。

【问题讨论】:

    标签: svn merge branch


    【解决方案1】:

    回想起来:如果使用 Windows,使用 WinMerge 手动合并可能是您最好的选择。

    下次:

    • 查看本地副本,称其为“老板”
    • 从“老板”导出并给他那个来源
    • 继续处理您自己的签出副本
    • Boss 更改完成后,将它们复制到 Boss 上
    • 更新“老板”
    • 签到“老板”

    你已经完成了。

    【讨论】:

      【解决方案2】:

      我会像你老板做了一个 feature-branch 一样,然后把这个 feature-branch 合并到你的主干:

      尝试找出你的老板从哪个版本开始进行更改(假设是版本 1000)。

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

      现在用你老板项目中的文件替换这个工作副本中的文件。您可以使用 WinMerge 或等效程序递归地对目录进行比较,并查找哪些文件是新的、修改的、删除的或未更改的。

      提交对分支的更改。

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

      现在你可以将特性分支重新集成到主干中,并威胁你的老板如果他继续不使用修订控制就杀了他。

      【讨论】:

        猜你喜欢
        • 2011-04-01
        • 2014-05-08
        • 2016-12-07
        • 2018-05-03
        • 2023-03-31
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多