在Subversion中用分支替换trunk

JW.*_*JW. 30 svn

假设人们一直在使用主干和Subversion存储库的分支.我想丢弃主干上的任何更改,并将其替换为分支的副本.

正如另一个问题所示,我可以移动或移除主干,然后将分支复制到主干.但随后树干的历史被分支的历史所取代.如果我想保留行李箱的历史怎么办?

我认为我想要的就是合并,但是忽略了目的地的变化,而只是用源代替.我将如何在Subversion中执行此操作?这被认为是好习惯吗?

SiB*_*SiB 36

虽然它是一个相当古老的线程,但仍然分享我的经验

我们最近为我们的一个项目做了这个,并遵循以下指导原则:

svn copy <repos/trunk> <repos/tag/old_trunk> -m "copied old trunk as tag"

svn delete <repos/trunk> -m "deleted trunk temporarily"

svn copy <repos/branch/new_fetaure_branch> <repos/trunk> -m "placed new trunk with features"
Run Code Online (Sandbox Code Playgroud)

执行这些步骤后,主干历史记录保持不变,并将新功能分支替换为主干.


Ste*_*fan 4

合并从分支到主干的所有更改,然后解决所有冲突

svn resolve path --accept theirs-full
Run Code Online (Sandbox Code Playgroud)

或者,您可以告诉合并这样做:

svn merge -rX:HEAD url/of/branch trunk\wc --accept theirs-full
Run Code Online (Sandbox Code Playgroud)

经过这样的合并后,您将获得一个与分支上的工作副本类似的工作副本。您所要做的就是提交该主干的工作副本。

  • 这不会保留自分支点以来在主干上所做的更改(至少在不冲突时)吗?我很确定这样的合并结果并不能保证看起来像主干,但你是专家...... (3认同)