[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Best practice for moving folders around?

From: Ulrich Eckhardt <eckhardt_at_satorlaser.com>
Date: Tue, 11 May 2010 17:33:13 +0200

On Tuesday 11 May 2010, Cooke, Mark wrote:
> Can I ask your suggestions on how best to correct the following
> scenario:
>
> In a new repository we checked a version of the product code into
> 'trunk' (moving projects from VSS, finally).

Just for the record: There are tools that preserve some history, in case you
care.

> This was cp'd to 'tags'/tag1.

A normal tagging operation, okay.

> A new svn user then cp'd 'tags'/tag1 to 'tags'/tag2 and
> checked this out as a working copy:
>
> [project] -> 'trunk'
> 'trunk' -> 'tags'/tag1
> 'tags'/tag1 -> 'tags'/tag2
> 'tags'/tag2 -> (wc)
> (wc) -> 'tags'/tag2

Generally, tags are points in time, they are not intended for development and
should be treated as immutable. There are even pre-commit hooks that enforce
this. However, there is nothing that could stop the user from creating a
working copy of it, only from committing to the repository.

> Several updates later we have discussed the idea of what is a 'tag',
> 'branch' and the 'trunk' and have decided that the development should
> have occurred in 'trunk' (small teams of one or two so no perceived need
> for developer branches) and that we should create a new 'tags'/tag2 for
> the release version.

Yes, development should have taken place either in trunk or in a separate
branch. What you can do now depends on where you are and what you did in
between....

1. If "tag2" was not modified and trunk was not modified either (only local
changes to the working copy), you could switch (svn switch) your working copy
to the trunk and commit from there. You could then delete the tag, there
isn't anything in there that happened anyway.

2. If the trunk was not modified, you could simply delete the project therein
and move "tag2" in its place. Looking at the history, you will see that the
location of the project jumps a bit around though, in case you care.

3. If the developer already committed his changes to the tag, and others
committed to trunk, you should merge those changes into trunk instead. For
that, you first declare the tag as a branch and move it to the "branches"
folder. Then, you simply merge the revisions you want to the trunk. This is
not different from the normal everyday merge that you do from a feature
branch to your trunk and explained in the manual. Note that the developer
must switch (svn switch) his working copy which still points at the tag,
either at the branch or at trunk.

> How do we best achieve this, preserving as much history as possible? I
> can think of several possible solutions:
>
> 1) merge 'tags'/tag2 into trunk, delete 'tags'/tag2 then create new
> 'tags'/tag2 from trunk?
>
> 2) delete 'trunk', move 'tags'/tag2 to become 'trunk', create new tag
>
> 3) I'm sure I could think of worse ideas

Actually, I would suggest merging the changes. Firstly, it documents that the
changes were made in isolation. Secondly, it keeps the continuity of trunk.
Lastly, you get familiar with branching and merging. In any case, you should
delete or move "tag2", because it is not a tag.

> using latest tortoise from windoze clients.

Right-click, submenu, "Merge...". This will guide you through the merge
process. Select "tag2" as source URL and a (clean) working copy of the trunk
as target. Ignoring line ending and whitespace sometimes helps, or merging
smaller ranges. Always merge and commit the root project folder, so you only
have "svn:mergeinfo" property in one place.

Good luck!

Uli

-- 
ML: http://subversion.tigris.org/mailing-list-guidelines.html
FAQ: http://subversion.tigris.org/faq.html
Docs: http://svnbook.red-bean.com/
Sator Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932
**************************************************************************************
Sator Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932
**************************************************************************************
           Visit our website at <http://www.satorlaser.de/>
**************************************************************************************
Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden.
E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Sator Laser GmbH ist für diese Folgen nicht verantwortlich.
**************************************************************************************
Received on 2010-05-11 17:33:56 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.