Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tortoisesvn Subversion 1.8 - merge - no more reintegrate a branch option

In tortoiseSvn 1.8 there is no "reintegrate" a branch option. What is the right way to reintegrate a branch in Tortoise Svn 1.8?

In choose merge and then next option: Merge first step

Then I get next window: enter image description here

Or am I doing something else wrong?

like image 715
Jernej Novak Avatar asked Aug 26 '13 12:08

Jernej Novak


People also ask

Does SVN merge delete the branch?

It depends on what you created the branch for in the first place. A branch is usually used for maintaining a released or soon-to-be-released version of software, so in general, no, you would not delete it.

How do I merge two SVN revisions?

To merge a range of revisions, use svn merge -r start:end from to where start and end are revision IDs. This will merge all revisions starting at start+1 up to and INCLUDING end . Note: it will NOT include the first revision (ex: -r3:45 will merge 4 through 45).


2 Answers

It is no longer in TortoiseSVN because Subversion 1.8 deprecated the --reintegrate option. Subversion 1.8 has automatic reintegration handling/detection.

See: Subversion 1.8 release notes, specifically the auto-reintegrate section

Here is the relevant area, for convenience:

Automatic reintegration merge (--reintegrate option deprecated)

During merges which merge all eligible revisions from another branch, Subversion 1.8 will automatically decide whether or not the merge is reintegrating a branch. Therefore, reintegrating a branch does no longer require the --reintegrate option for correct operation.

The --reintegrate option of svn merge is now deprecated and its use is discouraged. To reintegrate a branch, have a clean working copy of trunk and run the following command in its top-level directory:

$ svn merge ^/branches/my-branch 

This merge will still perform similar sanity checks which svn merge --reintegrate performed in earlier releases:

  • The working copy must not be a mixed-revision working copy.
  • The working copy must not have switched subtrees.
  • There must be no gaps in revision ranges merged from the reintegration target (e.g. the trunk) to the reintegration source
    (i.e. the branch to be reintegrated).

If any of these conditions are detected, the merge is aborted and the necessary steps must be taken to fix the problem before the branch can be reintegrated. In contrast to a --reintegrate merge, an automatic reintegration merge into a working copy with local modifications is allowed.

Merging to-and-fro between two branches in any order is possible using the automatic reintegration merge (the "keep-alive dance" is no longer necessary). For best results, it is recommended to always merge all eligible revisions, i.e. not using the -r or -c options of svn merge. Merging just a subset of eligible revisions increases the likelihood of problems during future merges.

Using --reintegrate in Subversion 1.8 will force a reintegration merge, whether or not that's the right merge to perform in the given situation.

In your case, you should do the following:

  1. Make sure you're using a clean, no modifications, up-to-date trunk working copy as you normally would
  2. TortoiseSVN -> Merge on this working copy root
  3. Select "Merge a range of revisions"
  4. Select the branch you are reintegrating
  5. Do not specify a revision range (to merge all eligible revisions)
  6. Subversion 1.8 should autodetect the reintegration and perform the same safety checks
  7. Proceed with your merge normally

According to the compatibility table, a Subversion 1.8 client can perform this auto-reintegrate as long as your Subversion server and repository format are each version 1.5 or later.

I haven't done an auto-reintegrate yet myself, I'm just going off the release notes.

like image 90
Joshua McKinnon Avatar answered Sep 26 '22 08:09

Joshua McKinnon


Just merge branch to any TARGET

Edit

OK, extended answer: "Merge for Dummies" in pictures

Preface

OK, I will not mask or hide used proving ground.

Used in this sample resources:

  • Repository "Hello, World" http://mayorat.ursinecorner.ru:8088/svn/Hello/
    • Branch http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/branche-francaise
    • Trunk of repo http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk

Repo Graph

  • Local directory z:\WC-Trunk (WC of trunk, used in process)
  • TortoiseSVN 1.8.1, Build 24570 - 32 Bit

Steps to reproduce

In order to merge branch to trunk, I have to have Working Copy of trunk, thus - trunk's HEAD checkouted to WC-Trunk

z:\WC-Trunk>svn ls Dr?p?r.ma?ar.sv?nskan.man.eller.smalensk?n.txt Hello.de.txt Hello.en.txt Hello.eo.txt Hello.fr.txt 

it's needed WC

z:\WC-Trunk>svn info Path: . Working Copy Root Path: Z:\WC-Trunk URL: http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk Relative URL: ^/trunk ... 

Start merging

Start

Select "Merge range", because "This method covers the case when you have made one or more revisions to a branch (or to the trunk) and you want to port those changes across to a different branch"

Merge type

Select all revisions, if otherwise not defined and path to tree in repository, which have to be merged to trunk (our French branch)

Merge Options

Define (if needed) some additional merge options, can test merge in order to detect, will be conflict resolution needed in any form, or just start real merge process at last

Options 2

like image 29
Lazy Badger Avatar answered Sep 26 '22 08:09

Lazy Badger