How to determine if svn: mergeinfo is damaged and how can I fix it?

I suspect that I have a damaged mergeinfo, but I'm not sure. Does anyone know how I would decide and what resources there will help fix the problems?

That is the question. My team recently switched to flexible work and uses function branches (history branches), where different teams work in the same sources at the same time. When the story reaches high availability, the team merges with the trunk. Mergers take days or weeks due to missing changes, unexpected changes and conflicts. We are talking about teams of 5-10 people, and the effort / outflow seems very high.

People use this merge pattern a) PULL - merge the connecting lines to the branches, enable, test, commit b) PUSH - merge the branch to the trunk, allow, test, commit c) Restore the branch (or, as a rule, create a new history branch and discard her since its inception)

At the end of this section, the branch and connecting line should be in order.

The problems that we see:

  • Changes that are not reported when merging between rows and branches are displayed in subsequent branches from the trunk
  • conflicts in svn: mergeinfo properties during merge
  • there is no file, but local editing of a new file added to the branch and transferred to the trunk
  • incoming + local deletion (a file deleted on the trunk and branch is displayed as a conflict)

(1) Should not occur. Pulling from a branch in the trunk should synchronize two for all changes already on the trunk. Merge changes between branches are changes that have occurred on the trunk. Therefore, in the first merger, they should have spread to the branch, but didnt. This indicates corrupted mergeinfo data that โ€œhidโ€ trunk changes.

(2) Should not occur. SVN must manage merge tracking changes. It also indicates mergeinfo data corruption.

(3) Should not occur. This is a case of adding a new file to a branch. It should appear as a new file added to the trunk. It also indicates corruption in the merger data.

(4) I believe this is an SVN error, and we cannot fix it. However, if this were our only problem, I would be happy

We are currently working on svn 1.5.x server with clients using svn 1.6.x and svn + ssh to connect. We plan to move on to the latest and greatest SVN, as some fixes may affect our problems.

However, it appears that our mergeinfo data is erroneous.

  • Mergers that do not report all changes
  • Conflicts in merging mergeinfo properties

Any good places for me to start looking?

+6
branch merge svn agile-processes
source share
2 answers

I conducted several experiments with SVN branching / merging, and found out that there are situations when the merge just does not work - for example, changes from the trunk are overwritten. Therefore, if you continue to use SVN for function branches, you will be in a world of pain.

I did similar experiments with git and I did not find a way to get the wrong merge. If switching to git might be an acceptable team / guide, I highly recommend using it.

+2
source share

We had similar problems due to similar circumstances and to a large extent they were resolved.

The most important thing:

If you merge into your branch from the trunk after creating the branch, you need to mark the connecting line with the branch fixing (using svn merge -record-only), otherwise, when you try to reintegrate back into the main, it will try to merge the fixing of the connecting line to the branch back into the trunk .

This, obviously, leads to the return of changes to the trunk made after a later transaction of trunk-> branches, tends to cause mass conflicts (especially tree conflicts, if you created a new file or directory in the trunk), etc.

Thus, our process is to either never synchronize the trunk to the branch after its creation (works fine for short branches), or to perform the following actions:

  • branch b from the trunk
  • communicates with the trunk and branch
  • reintegrate the connecting line into the branch and commit (resolve conflicts, but otherwise do not make any changes, even compile).
  • merge svn -record immediately only to verify that the trunk is locked to the branch
  • fix any other problems with the branch and continue development.
  • after completion of reintegration from the branch to the trunk.

I found: http://www.collab.net/community/subversion/articles/merge-info.html useful in developing what we are doing wrong.

+2
source share

All Articles