将更改从分支合并到主干

时间:2019-01-17 14:31:34

标签: svn version-control tortoisesvn

我正在使用SVN进行版本控制,并在Eclipse中使用了一个项目。 但是,我在Windows 10中使用TortoiseSVN作为客户端。

所以我从Windows资源管理器提交并更新,没问题。

所以我开始测试。

我在存储库中有一个文件夹/trunk,在存储库中也有一个文件夹/branches/1.77。 (我用Tortoise SVN-> Branch / Tags创建的)没有问题,我没有切换。)

首先,我将工作副本指向中继文件夹,创建文件versionado.trunk.txt并提交更改。

一切都很好。

我切换到/braches/1.77。在我的工作副本中,我看到SVN删除了versionado.trunk.txt

然后在我的工作副本中创建另一个文件versionado.branch.txt,然后提交。很好,我已将versionado.branch.txt版本化。

在我的工作副本中,我没有versionado.trunk.txt,因为我在分支机构上工作。

当我再次切换到中继线时,versionado.branch.txt从我的工作副本中删除,因为我正在中继线中工作,并且SVN再次创建了versionado.trunk.txt

我的问题是,我必须在工作副本中“存在”从分支(x.xx)合并到主干的位置吗?

我的策略是在主干中工作(每日开发),并且我已经在分支中部署了版本,最终我必须修复一些错误,这些错误应该合并到主干中!

我尝试从分支合并到主干(我的工作副本指向主干),但是SVN告诉我存在树冲突,因为versionado.trunk.txt不存在(在分支上的交换机上已删除它)到主干)。

知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

我不是SVN专家,但以下方法可能会有所帮助:

将更改从分支合并到主干时,通常不会直接编辑存储库。相反,您正在修改主干的工作副本,然后提交更改。使用merge命令进行合并非常有用,因为SVN具有一个不错的SVN属性,称为svn:mergeinfo,该属性可以保留合并项中的先前历史记录。因此,以下工作流程应正常工作:

  1. switch到主干的工作副本,并确保已update d。
  2. merge从分支到主干工作副本的修订。
  3. commit从分支到主干的更改。

我不确定树冲突,因为您没有足够详细地描述目录结构,并且我仍在学习SVN。如果您使用MCVE分支和主干结构示例提出了一个新问题,我相信您会得到更多帮助。


关于进一步的内容,我发现免费书籍带有Subversion的版本控制中的"Keeping a Branch in Sync"部分有助于解释您所需的基本分支工作流程。尽管它描述的是命令行客户端,而不是Tortoise SVN,但概念是相同的。

Tortoise SVN的文档还提供了关于该主题的"Merging"部分,尽管他们建议您返回并阅读SVN书中有关分支和合并的整个章节,如果您想继续发展,我也同意。 SVN技能;即使您不使用命令行客户端,它也对SVN的进程非常启发。