我正在使用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
不存在(在分支上的交换机上已删除它)到主干)。
知道我在做什么错吗?
答案 0 :(得分:0)
我不是SVN专家,但以下方法可能会有所帮助:
将更改从分支合并到主干时,通常不会直接编辑存储库。相反,您正在修改主干的工作副本,然后提交更改。使用merge
命令进行合并非常有用,因为SVN具有一个不错的SVN属性,称为svn:mergeinfo
,该属性可以保留合并项中的先前历史记录。因此,以下工作流程应正常工作:
switch
到主干的工作副本,并确保已update
d。merge
从分支到主干工作副本的修订。commit
从分支到主干的更改。我不确定树冲突,因为您没有足够详细地描述目录结构,并且我仍在学习SVN。如果您使用MCVE分支和主干结构示例提出了一个新问题,我相信您会得到更多帮助。
关于进一步的内容,我发现免费书籍带有Subversion的版本控制中的"Keeping a Branch in Sync"部分有助于解释您所需的基本分支工作流程。尽管它描述的是命令行客户端,而不是Tortoise SVN,但概念是相同的。
Tortoise SVN的文档还提供了关于该主题的"Merging"部分,尽管他们建议您返回并阅读SVN书中有关分支和合并的整个章节,如果您想继续发展,我也同意。 SVN技能;即使您不使用命令行客户端,它也对SVN的进程非常启发。