How to have tortoisesvn Always freeze svn:externals for tags

663 views
Skip to first unread message

dnndev

unread,
Dec 31, 2009, 10:18:26 AM12/31/09
to us...@tortoisesvn.tigris.org
Is it possible with tortoiseSVN to always freeze svn:externals for tags?

the scenario is our trunk will always use the 'head' revision for externals, however when we create 'tags' we would like for them to have a revision set for externals to properly 'freeze' them at a specific point in time.

I would like for the above to be automatic when creating a tag from the trunk. If tortoiseSVN does not support this then a script would be useful. It seems like this is something that should be automated as opposed to manually setting a revision each time a tag is created.

thanks!

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2433985

To unsubscribe from this discussion, e-mail: [users-un...@tortoisesvn.tigris.org].

Jeremy

unread,
Dec 31, 2009, 10:32:28 AM12/31/09
to us...@tortoisesvn.tigris.org
I'm on Win7 x64 Home, running TortoiseSVN 1.6.6, Build 17493 - 64 Bit , 2009/10/19 20:22:18

I have a main folder, which is my working copy.  Inside, I needed to have several other working copies from other repos that my project depends on.  I did this twice to make sure it wasn't user error.  When updating the parent working copy I get this

"Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for '/svnroot/nooku-framework/
trunk/code/media/plg_koowa'"

So the directory is like somewhat like this (simplified):

/mysvn - checked out from one svn
 - - - /admin/plugin1 - checked out from another svn
 - - - /plugin2 - checked out from a third svn

I should add that individually updating the nested copies works, only when trying to update/commit the main parent folder that is my project.  So its not the svn for nooku, because that functions individually.  Any ideas?  Thanks!

Simon Large

unread,
Dec 31, 2009, 2:31:04 PM12/31/09
to us...@tortoisesvn.tigris.org
2009/12/31 dnndev <tony....@gmail.com>:

> Is it possible with tortoiseSVN to always freeze svn:externals for tags?
>
> the scenario is our trunk will always use the 'head' revision for externals, however when we create 'tags' we would like for them to have a revision set for externals to properly 'freeze' them at a specific point in time.
>
> I would like for the above to be automatic when creating a tag from the trunk. If tortoiseSVN does not support this then a script would be useful. It seems like this is something that should be automated as opposed to manually setting a revision each time a tag is created.

It sounds like a good idea, but how would it be automated? The
externals could be a from a different repository and might not be the
current HEAD revision. There might be a lot of externals, all from
different repositories, in which case a server round trip would be
required for each one to get the head revision to peg to.

Simon

--
: ___
: oo // \\ "De Chelonian Mobile"
: (_,\/ \_/ \ TortoiseSVN
: \ \_/_\_/> The coolest Interface to (Sub)Version Control
: /_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434023

Simon Large

unread,
Dec 31, 2009, 2:33:31 PM12/31/09
to us...@tortoisesvn.tigris.org
2009/12/31 Jeremy <gnom...@gnomeontherun.com>:

Why have you resent the same message in reply to a completely
different email? Did you even read the reply Stefan sent to your
original email?

Simon

--
: ___
: oo // \\ "De Chelonian Mobile"
: (_,\/ \_/ \ TortoiseSVN
: \ \_/_\_/> The coolest Interface to (Sub)Version Control
: /_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434024

Jeremy

unread,
Dec 31, 2009, 2:42:59 PM12/31/09
to us...@tortoisesvn.tigris.org
I don't see my original post anywhere, I did not mean to put it in conjunction here, so that is my fault - my apologies. I've never used a list like this before.

That said, I have no responses to my first message, and no indication that it is on this list anywhere. It wasn't lost in my email, I've checked there before posting here.

Sorry again, but I never received any replies, or indications that my message was submitted.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434025

Daniel Becroft

unread,
Dec 31, 2009, 7:03:34 PM12/31/09
to us...@tortoisesvn.tigris.org
On Fri, Jan 1, 2010 at 1:18 AM, dnndev <tony....@gmail.com> wrote:
Is it possible with tortoiseSVN to always freeze svn:externals for tags?

the scenario is our trunk will always use the 'head' revision for externals, however when we create 'tags' we would like for them to have a revision set for externals to properly 'freeze' them at a specific point in time.

I would like for the above to be automatic when creating a tag from the trunk. If tortoiseSVN does not support this then a script would be useful. It seems like this is something that should be automated as opposed to manually setting a revision each time a tag is created.

thanks!

I think the svncopy.pl script can do this 'automatically'. It it available here:

http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svncopy

Regards,
Daniel B.

dnndev

unread,
Jan 1, 2010, 2:39:08 AM1/1/10
to us...@tortoisesvn.tigris.org, Daniel Becroft

I tried svncopy.pl did not seem to work with svn 1.6.6.

SmartSVN has a functionality similar to what i am looking for as per this thread:
You should try SmartSVN which optionally converts HEAD-externals to fixed externals when creating tags or branches. You can find this option (External Revisions: (o) Leave as is ( ) Fix all ( ) Fix except below) at the bottom of the Add Tag/Add Branch dialogs.

http://stackoverflow.com/questions/1982538/how-to-have-tortoisesvn-always-freeze-svnexternals-for-tags

I really want to use tortoiseSVN -> its much better than anything else out there and I think many would benefit from this feature.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434055

dnndev

unread,
Jan 1, 2010, 2:51:48 AM1/1/10
to us...@tortoisesvn.tigris.org
> 2009/12/31 dnndev <tony....@gmail.com>:
> > Is it possible with tortoiseSVN to always freeze svn:externals for tags?
> >
> > the scenario is our trunk will always use the 'head' revision for externals, however when we create 'tags' we would like for them to have a revision set for externals to properly 'freeze' them at a specific point in time.
> >
> > I would like for the above to be automatic when creating a tag from the trunk. If tortoiseSVN does not support this then a script would be useful. It seems like this is something that should be automated as opposed to manually setting a revision each time a tag is created.
>
> It sounds like a good idea, but how would it be automated? The
> externals could be a from a different repository and might not be the
> current HEAD revision. There might be a lot of externals, all from
> different repositories, in which case a server round trip would be
> required for each one to get the head revision to peg to.
>
> Simon
>
> --
> : ___
> : oo // \\ "De Chelonian Mobile"
> : (_,\/ \_/ \ TortoiseSVN
> : \ \_/_\_/> The coolest Interface to (Sub)Version Control
> : /_/ \_\ http://tortoisesvn.net


Hmm... in our case all our projects are in one repo. In my opinion even if it took a few seconds longer to complete it would be worth it, instead having to take the time to change all the revs on externals and run the risk of accidentally typing something wrong etc...

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434056

KJ

unread,
Jan 1, 2010, 1:56:14 PM1/1/10
to us...@tortoisesvn.tigris.org
>
> I tried svncopy.pl did not seem to work with svn 1.6.6.
>

By any chance was the error...

Can't call method "temp_dir" on an undefined value at svncopy.pl line
221

If so, there is a Windows fix for svncopy.pl that I found here...

http://svn.haxx.se/users/archive-2005-08/1136.shtml

KJ

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434097

Simon Large

unread,
Jan 1, 2010, 4:52:56 PM1/1/10
to us...@tortoisesvn.tigris.org
2009/12/31 Jeremy <gnom...@gnomeontherun.com>:

> I don't see my original post anywhere, I did not mean to put it in conjunction here, so that is my fault - my apologies.  I've never used a list like this before.
>
> That said, I have no responses to my first message, and no indication that it is on this list anywhere. It wasn't lost in my email, I've checked there before posting here.

You won't see it on this list because you sent the question to the dev
list. That is where you will find the reply.

http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2433920&orderBy=createDate&orderType=desc

http://svn.haxx.se/tsvn/archive-2009-12/0264.shtml


> Sorry again, but I never received any replies, or indications that my message was submitted.

Simon

--
: ___
: oo // \\ "De Chelonian Mobile"
: (_,\/ \_/ \ TortoiseSVN
: \ \_/_\_/> The coolest Interface to (Sub)Version Control
: /_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434114

dnndev

unread,
Jan 1, 2010, 6:04:20 PM1/1/10
to us...@tortoisesvn.tigris.org
> >
> > I tried svncopy.pl did not seem to work with svn 1.6.6.
> >
>
> By any chance was the error...
>
> Can't call method "temp_dir" on an undefined value at svncopy.pl line
> 221
>
> If so, there is a Windows fix for svncopy.pl that I found here...
>
> http://svn.haxx.se/users/archive-2005-08/1136.shtml
>
> KJ

Hi - Thanks for the suggestion. No that is not the error I was getting. The error was to the effect of:
svncopy.pl: LatestRevision: log -q on 'app1' failed

A few more notes about my setup:
- I am using single file and folder externals
- I am using relative paths

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434119

RHF

unread,
Jan 3, 2010, 12:12:35 PM1/3/10
to us...@tortoisesvn.tigris.org
On Dec 31 2009, 1:31 pm, Simon Large
<simon.tortoise...@googlemail.com> wrote:

> It sounds like a good idea, but how would it be automated?

I have been manually doing the following as suggested by Robin Guest
in Q 7 of the following link::
http://groups.google.com/group/tortoisesvn/tree/browse_frm/thread/07bb8df944ba6090/b9496e0ea755f25d?hl=en&rnum=1&q=tag+external&_done=%2Fgroup%2Ftortoisesvn%2Fbrowse_frm%2Fthread%2F7bb8df944ba6090%2F6f66c104a8c16fc1%3Fhl%3Den%26lnk%3Dgst%26q%3Dtag%2Bexternal%26#doc_7be10fd07e73b423

Robin's procedure is summarized by:
"Sure. I always manually add revisions to my externals before I tag
them.
Takes all of 10 seconds extra. I change the svn:externals property in
my
up-to-date wc, tag from the wc, leaving the wc pointing at trunk, then
revert it afterwards."

It would be a big help if this process could be automated and
incorporated into TSVN.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434406

Simon Large

unread,
Jan 3, 2010, 5:59:02 PM1/3/10
to us...@tortoisesvn.tigris.org
2010/1/3 RHF <robert.h...@gmail.com>:

> On Dec 31 2009, 1:31 pm, Simon Large
> <simon.tortoise...@googlemail.com> wrote:
>
>> It sounds like a good idea, but how would it be automated?
>
> I have been manually doing the following as suggested by Robin Guest
> in Q 7 of the following link::
> http://groups.google.com/group/tortoisesvn/tree/browse_frm/thread/07bb8df944ba6090/b9496e0ea755f25d?hl=en&rnum=1&q=tag+external&_done=%2Fgroup%2Ftortoisesvn%2Fbrowse_frm%2Fthread%2F7bb8df944ba6090%2F6f66c104a8c16fc1%3Fhl%3Den%26lnk%3Dgst%26q%3Dtag%2Bexternal%26#doc_7be10fd07e73b423
>
> Robin's procedure is summarized by:
> "Sure. I always manually add revisions to my externals before I tag
> them.
> Takes all of 10 seconds extra. I change the svn:externals property in
> my
> up-to-date wc,

That's the first troublesome bit. Because you know your externals and
exactly what they should be pegged to. But there could be a lot of
different externals, all from different repositories, some pointing at
tags (so don't need pegging maybe). That would require a server round
trip for every external to find out the HEAD revision, so it would
definitely have to be an option, probably off by default.

> tag from the wc, leaving the wc pointing at trunk, then
> revert it afterwards."

and that's the second. You can edit the externals and revert
afterwards in your own manual procedure, but there is no way you can
include a revert in an automated procedure because it could revert
things you don't want reverted. The only way this would be safe in the
general case is if you first crawl the WC and check that there are no
modifications. If there are then the auto pegging would have to be
blocked because a revert would be destructive.

> It would be a big help if this process could be automated and
> incorporated into TSVN.

It's certainly not impossible, and I can see it could be very useful,
but it is not a trivial change.

Simon

--
: ___
: oo // \\ "De Chelonian Mobile"
: (_,\/ \_/ \ TortoiseSVN
: \ \_/_\_/> The coolest Interface to (Sub)Version Control
: /_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2434453

Gilles Raymond

unread,
Jan 6, 2010, 3:51:43 AM1/6/10
to us...@tortoisesvn.tigris.org
I am in the same kind of organisation than dnndev.
As him, I definitely wanted to find that same feature in TortoiseSVN.

To manage that, I have created a script that walk the entire module I want to tag and for each svn:external found :
* check if the svn:external is from the same repository
* If so, automatically TAG the external module with the same label
* Update the svn:externals property in the current WC with the new label.

That is definitely the best behaviour in my point of view.

A more avanced feature would be to request user to setup repository he wants to be managed that way (in the SVN tortoise configuration for exemple).

If TortoiseSVN finally implements this feature, there would be the question of other commands (svn merge for exemple), but that is another story.


Happy new year,
Gilles.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2435133

dnndev

unread,
Jan 7, 2010, 10:09:13 AM1/7/10
to us...@tortoisesvn.tigris.org
> I am in the same kind of organisation than dnndev.
> As him, I definitely wanted to find that same feature in TortoiseSVN.
>
> To manage that, I have created a script that walk the entire module I want to tag and for each svn:external found :
> * check if the svn:external is from the same repository
> * If so, automatically TAG the external module with the same label
> * Update the svn:externals property in the current WC with the new label.
>
> That is definitely the best behaviour in my point of view.
>
> A more avanced feature would be to request user to setup repository he wants to be managed that way (in the SVN tortoise configuration for exemple).
>
> If TortoiseSVN finally implements this feature, there would be the question of other commands (svn merge for exemple), but that is another story.
>
>
> Happy new year,
> Gilles.

Thanks to everyone for your feedback/info.

Since I could not find anything that would completely meet our needs (tried smartsvn and svncopy.pl) I made a console app that so far has passed all our test cases.

A high level overview: The app takes a repository URL then looks for all externals and adds the last commit revision for them - I do a "svn info" and get the "commit revision".

The app works with both folder and single file externals.

I hope to post the code soon.

Regards,
Tony

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2435492

KJ

unread,
Jan 7, 2010, 12:15:25 PM1/7/10
to us...@tortoisesvn.tigris.org
On Jan 7, 10:09 am, dnndev <tony.go...@gmail.com> wrote:
>
> A high level overview: The app takes a repository URL then looks for all externals and adds the last commit revision for them - I do a "svn info" and get the "commit revision".
>
> The app works with both folder and single file externals.
>

It sounds like it should work when the external happens to point to a
totally different URL then the source URL, is that correct?

> I hope to post the code soon.
>

Let me be the first then to say 'thank you' for your efforts. I look
forward to trying it out, it sounds like it should plug what I
consider to be a big hole.

Kevin

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2435536

dnndev

unread,
Jan 7, 2010, 1:04:36 PM1/7/10
to us...@tortoisesvn.tigris.org
> It sounds like it should work when the external happens to point to a
> totally different URL then the source URL, is that correct?

Yes - correct.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2435551

dnndev

unread,
Jan 19, 2010, 9:50:39 AM1/19/10
to us...@tortoisesvn.tigris.org
Source and package to freeze externals.
http://svnxf.codeplex.com/

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2440265

Reply all
Reply to author
Forward
0 new messages