仅提交svn合并信息

仅提交svn合并信息,svn,merge,mergeinfo,Svn,Merge,Mergeinfo,我们正在合并从主干到分支的更改。当我们这样做时,合并信息会被记录下来 由于分支中可能有其他更改,是否有安全的方法仅提交因合并而受影响的文件(假设没有其他更改)以及合并属性/信息 “假设我想将修订版“r1”从主干合并到分支。我为“r1”从主干合并到分支。现在,对于“r1”,在分支文件夹中记录合并信息。如果我在分支中执行svn diff,它将显示“.”已修改,并显示“r1”是合并属性的一部分。现在,我如何提交由于仅合并“r1”而修改的文件,以及显示为“r1”的合并属性。“如果您使用的是SVN客户端,

我们正在合并从主干到分支的更改。当我们这样做时,合并信息会被记录下来

由于分支中可能有其他更改,是否有安全的方法仅提交因合并而受影响的文件(假设没有其他更改)以及合并属性/信息


“假设我想将修订版“r1”从主干合并到分支。我为“r1”从主干合并到分支。现在,对于“r1”,在分支文件夹中记录合并信息。如果我在分支中执行svn diff,它将显示“.”已修改,并显示“r1”是合并属性的一部分。现在,我如何提交由于仅合并“r1”而修改的文件,以及显示为“r1”的合并属性。“

如果您使用的是SVN客户端,如TortoiseSVN,在正常合并中,
mergeinfo
将自动更新为根文件夹的文件夹属性,并在提交文件列表期间列出属性发生更改的文件夹

如果这不是为您的提交自动进行的,那么如果您使用的是TortoiseSVN客户机,您甚至可以通过以下步骤手动执行此操作(假设
root
为父级,
mytask
为当前任务分支,
subtask
为当前分支的已合并后分支,
programs
为每个分支中的代码文件夹):

  • 右键单击分支工作副本上的
    programs
    文件夹
    mytask
    ,然后选择选项
    TortoiseSVN-->属性
  • 在新窗口中,如果您已经记录了以前的
    mergeinfo
    ,则它将列出属性
    svn:mergeinfo
    ,其值与以下值类似:

    根目录/程序:1-489

    根/任务/我的任务/任务/子任务/程序:380-410

    然后,您可以执行以下步骤:

    a) 通过选择svn:mergeinfo项在窗口中选择“编辑-->高级”,并更新要提交的合并信息,单击“确定”

  • 在新窗口中,如果没有任何以前的
    mergeinfo
    ,则可以执行以下步骤:

    a) 选择选项
    New-->Advanced

    b) 从下拉列表中选择
    svn:mergeinfo
    ,在值文本框中添加相应的
    mergeinfo
    ,然后保存

  • 通过单击
    程序
    文件夹执行SVN Commmit,它将在文件中列出要提交的
    程序
    文件夹,只需更改属性即可提交
  • 另一方面

    如果您想在合并过程中仅提交合并文件(从父级到工作副本),并保持本地修改的其他文件未提交,则没有直接的方法来实现这一点。间接的方法是保留任务分支(
    mytask
    )的两个单独的工作副本(比如copy1和copy2)并执行以下步骤:

  • copy1
    正在进行所有本地更改,您可以将其保留一段时间
  • SVN签出分支机构的新工作副本
    copy2
  • 将父项中的更改合并到
    copy2
    并提交该更改。这可确保仅将合并的更改提交到服务器,并提供所需的所有
    mergeinfo
  • 然后转到您的
    copy1
    ,执行SVN更新,它会将新合并的更改从服务器获取到此工作副本。(如果有一些文件在合并过程中更新,并且在本地更改过程中也由您更改,则在此SVN更新过程中会发生冲突)。解决冲突,然后您可以继续进行本地更改

  • 这是一个老话题,但是,因为我也需要类似的东西,并且在stackoverflow上没有找到任何东西,所以我的观点是:使用“svn commit--depth=empty folder_with_mergeinfo merged_files”


    在我的例子中,我正在合并两个分支,如果我尝试“svn ci branch”,它将尝试提交在该分支下修改的所有内容。使用--depth=empty可确保仅提交文件夹合并信息和所需文件。

    其他更改是什么意思"? 工作副本中的更改,哪些不属于该分支?@TobiasZander Yea。分支中与合并无关的其他文件的更改。问题是,我们可以单独提交文件,但无法仅提交合并属性/infoI。如果我正确理解您的问题,我不确定。如果您只想提交合并信息,只需在提交时取消选择所有其他文件。如果只希望合并特定修订,也可以在执行选择时仅选择这些修订。您使用什么svn客户端?@TobiasZander让我们假设我想将修订版“r1”从主干合并到分支。我为“r1”从主干合并到分支。现在,对于“r1”,在分支文件夹中记录合并信息。如果我在分支中执行svn diff,它将显示“.”已修改,并显示“r1”是合并属性的一部分。现在,我如何提交由于仅合并“r1”而修改的文件,以及显示为“r1”的合并属性。这有意义吗|我想您的问题是,您的分支工作副本有一些本地未提交的更改,并且在同一工作副本上,您希望从父级合并一些修订(在您的问题中提到r1)。但是,在提交时,只需提交合并文件,而不需要提交合并操作之前存在的本地未合并文件。我是否正确理解了您的问题?这似乎并没有提交更改的文件。如果您像我的评论所说的那样将它们添加到svn命令行,则应该提交。当然,这只有在您没有更改过多文件的情况下才实用。对不起,我认为行太长,并且带有\u mergeinfo的
    文件夹\u和
    合并的\u文件之间没有空间。