Menelaos
Menelaos

Reputation: 26004

SVN cherry pick issue - merge

Introduction

My question is based in part on the q/a @ TortoiseSVN cherrypicking instructions. I am able to cherry pick in git without any problems but in the current team we use SVN.

I have a commit on trunk that I want to copy over to a branch. I do not want to merge one branch into the other, or trunk into the branch, or the branch into the trunk or anything that includes copying the history of changes from one to the other.

I am using trortise SVN.

Step 1: I go to the specific folder that deals with the changed files

Step 2: I select Merge

enter image description here

Step 3: Merge from a Range of Revisions enter image description here

Step4: Merge Options enter image description here

Problem

Supposedly the merge takes place but I see that the actual single java file in the directory has not been updated with the changes from trunk.

Additionally, the only indication that something changed is when I go to commit which indicated that a folder's properties have been changed. However, I am not interested in committing these as I have been instructed to not commit folder property changes.

enter image description here

This is very frustrating, some colleagues using intelli-j seem to be able to do this very easily ... especially committing specific files/changes from working code to another branch for example.

Update: My workaround was to switch to Intelli-j

I did not like much the way tortoise svntreated the selective merging. I switched to intelli J and outline how I do what I need to. I also realized it is not so much cherry picking as selectively merging. This means that also conflicts arise and need to be resolved. It is not as great as git.

enter image description here enter image description here

Following these two steps/screens, intelli-j asks you to resolve conflicts if they exist. It then creates a changelist with the specific files that were merged. You then commit.

Upvotes: 1

Views: 1488

Answers (1)

Patrick Quirk
Patrick Quirk

Reputation: 23757

Tortoise did exactly what you told it to do; it only recorded the merge happened but didn't perform the actual merge. This is what the option does in your picture in step 4 (from the command-line tool's description of the option):

Enables a special mode of svn merge in which the specified merge operation is recorded in the local merge tracking information, but is not actually performed.

The way SVN records merges is to store info about the source URL and revsion in the svn:mergeinfo property for that file/folder, which is why you see a folder property modification.

If you had left this unchecked, the merge would have occurred as you expected it to.

Upvotes: 1

Related Questions