You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by "Gale, David" <Da...@Hypertherm.com> on 2006/02/24 15:19:14 UTC

[DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Kent Borg wrote:
> On Thu, Feb 23, 2006 at 07:44:17PM -0800, Ron wrote:
>> I agree.  There is a lot I love about SVN over CVS (and VSS) but
>> sometimes I just want simple tags.  It is true that subversion's
>> system can do everything tags can (and then some), but it's more
>> cumbersome to use.  I don't want to have to know the structure of
>> the repository (/tags, /release, /trunk, etc, etc) just to snap a
>> symbolic name on a revision to help my memory down the road.
> 
> Another former CVS users here, one who likes subversion but one who
> also finds the lack of tags unnerving.
> 
> One thing I have is a tags.txt file (that I also keep in subversion),
> and in it I keep notes.  For some notable versions (e.g., "New feature
> X is working, I think") I note the date and version number along with
> a short comment.

Perhaps we could satisfy all of our former CVS-acolytes (myself
included) with a "svn alias" command (or some such), which would assign
a human-readable name to a specific revision.  HEAD, PREV, and the like
already exist, but there's currently no way to assign one of the user's
own creation.  I'd propose something like:

svn alias [-force] [-r 21134] NEW_LABEL [path-to-repos]

If the command is run within a working copy, the path to the repository
should be picked up from that.  If no revision is specified, HEAD should
be assumed.  If the NEW_LABEL alias already exists, an error should be
thrown unless -force is specified (matches CVS's behavior).  This
doesn't change the working copy; it creates a versionless alias on the
repository, which would then be available for future "-r <alias>"
commands.  I'd also suggest a "svn alias -list" command, which would
list all of the aliases in the repository and the revisions they point
to.

Comments?
-David

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Theo Van Dinter <fe...@kluge.net>.
On Sat, Feb 25, 2006 at 08:07:51AM -0800, Ron wrote:
> >        svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"
> 
> access methods.  Each time I want to quickly create a tag (like when I send 
> a version to testing), it's a pain, and when something is a pain to do, 
> people stop doing it.

So why not create a script to do that for you?  "svntag" could do something
simple like this (warning: this script has had very little testing and has
obvious error cases that it doesn't catch):

TAGNAME=$1
CURL=`svn info . | grep URL | awk '{print $2}' | sed -e "s/\/trunk\/.*/\/trunk/"`
NURL=`echo $CURL | sed -e "s/\/trunk$/\/tags\/$TAGNAME/"`
svn cp -m "Creating tag $TAGNAME" $CURL $NURL

If you're on a platform that doesn't allow for scripting such as this,
there's very likely a way to create a version in whatever the appropriate
language is to perform the same actions.

-- 
Randomly Generated Tagline:
"Bushes are nice 'cause they don't have prickers. Unless they do. This one did. Ouch!"
 
 	--Ralph Wiggum
 	  This Little Wiggy (Episode 5F13)

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Duncan Murdoch <mu...@stats.uwo.ca>.
On 2/25/2006 11:07 AM, Ron wrote:
>> Subversion currently has:
>>
>>     To create a new tag:
>>
>>         svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"
> 
> I think illustrates the problem.  That is a very cumbersome line to type just to tag a version for future reference.  It's error prone and requires me to know (or remember) a lot about the repository.  I work on a lot of different projects connected to different servers using two different access methods.  Each time I want to quickly create a tag (like when I send a version to testing), it's a pain, and when something is a pain to do, people stop doing it.
> 
> On top of that, we are on Windows, so doing things like {trunk,tags/$T} won't work, we're forced to type the whole line (please do not bring up cygwin, because that is missing the point).

If you're on Windows, use TortoiseSVN.  All you need to do is highlight 
the part of the path you don't want (probably "trunk"), and type in the 
part you do want (e.g. "tags/tagname").  You don't need to remember any 
of the paths.

Duncan Murdoch
> 
> Everyone that is asking for "tags" understands that subverison can already do what they want, but what we're looking for is a easier more intuitive way to do it.
> 
> When I want to update my WC, I just type:
> 
> svn update
> 
> Simple and I don't have to remember paths to repositories even the access methods.  All I want is something that is that simple and easy to remember to apply a quick tag (or revision # alias).
> 
> I am all in favor of finding the correct solution to this and not just a kludge, but every time I have to create a whole new branch of my project just to tag a simple version I send to test so I remember, I feel like that's a kludge.
> 
> Ron
> 
> 
> 
> Ryan Schmidt wrote:
>> On Feb 24, 2006, at 18:11, robert@infotility.com wrote:
>>
>>> Since we know already that symbolic aliases are useful
>>> (HEAD, BASE, etc) why not set up a mechanism to allow
>>> users to make new ones?
>>>
>>> Various correspondents have suggested workarounds or
>>> hacks of various kinds. Thanks guys, but if there's
>>> evidence that there is widespread desire for this feature
>>> (namely that it has been solved multiple times by
>>> multiple persons) why not just build it into the standard release?
>>
>> I for one just don't understand yet what functionality is being gained.
>>
>>
>> Given a project named $P and a repository whose root is $R, and a 
>> standard trunk/branches/tags structure in the project, and a tag named $T,
>>
>>
>> Subversion currently has:
>>
>>     To create a new tag:
>>
>>         svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"
>>
>>     To replace an existing tag:
>>
>>         svn rm $R/$P/tags/$T -m "Removing tag $T"
>>         svn cp $R/$P/{trunk,tags/$T} -m "Recreating tag $T"
>>
>>     To check out the tag:
>>
>>         svn co $R/$P/tags/$T
>>
>>     To get a log of the tag:
>>
>>         svn log $R/$P/tags/$T
>>
>>
>> What's being proposed seems to be:
>>
>>     To create a new tag:
>>
>>         svn alias [-r HEAD] $T $R/$P/trunk
>>
>>     To replace an existing tag:
>>
>>         svn alias -force [-r HEAD] $T $R/$P/trunk
>>
>>     To check out the tag:
>>
>>         svn co -r $T $R/$P/trunk
>>
>>     To get a log of the tag:
>>
>>         svn log -r $T:0 $R/$P/trunk
>>
>>
>> Is it just this alternate syntax that's desired, or is there some 
>> additional functionality that's gained over Subversion's existing 
>> tagging method that I'm just not seeing at the moment?
>>
>> The idea of CVS-like tags, or revision aliases, or revision labels, or 
>> symbolic names for revisions, has come up on this mailing list many, 
>> many times before (you can search the list archives for some of those 
>> terms if you're interested). But I don't think anyone has so far 
>> succeeded in making a compelling enough case that the benefit of having 
>> this feature would outweigh the considerable development effort needed 
>> to implement it.
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
>> For additional commands, e-mail: users-help@subversion.tigris.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: users-help@subversion.tigris.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Ron <li...@rzweb.com>.
> Subversion currently has:
> 
>     To create a new tag:
> 
>         svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"

I think illustrates the problem.  That is a very cumbersome line to type just to tag a version for future reference.  It's error prone and requires me to know (or remember) a lot about the repository.  I work on a lot of different projects connected to different servers using two different access methods.  Each time I want to quickly create a tag (like when I send a version to testing), it's a pain, and when something is a pain to do, people stop doing it.

On top of that, we are on Windows, so doing things like {trunk,tags/$T} won't work, we're forced to type the whole line (please do not bring up cygwin, because that is missing the point).

Everyone that is asking for "tags" understands that subverison can already do what they want, but what we're looking for is a easier more intuitive way to do it.

When I want to update my WC, I just type:

svn update

Simple and I don't have to remember paths to repositories even the access methods.  All I want is something that is that simple and easy to remember to apply a quick tag (or revision # alias).

I am all in favor of finding the correct solution to this and not just a kludge, but every time I have to create a whole new branch of my project just to tag a simple version I send to test so I remember, I feel like that's a kludge.

Ron



Ryan Schmidt wrote:
> 
> On Feb 24, 2006, at 18:11, robert@infotility.com wrote:
> 
>> Since we know already that symbolic aliases are useful
>> (HEAD, BASE, etc) why not set up a mechanism to allow
>> users to make new ones?
>>
>> Various correspondents have suggested workarounds or
>> hacks of various kinds. Thanks guys, but if there's
>> evidence that there is widespread desire for this feature
>> (namely that it has been solved multiple times by
>> multiple persons) why not just build it into the standard release?
> 
> 
> I for one just don't understand yet what functionality is being gained.
> 
> 
> Given a project named $P and a repository whose root is $R, and a 
> standard trunk/branches/tags structure in the project, and a tag named $T,
> 
> 
> Subversion currently has:
> 
>     To create a new tag:
> 
>         svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"
> 
>     To replace an existing tag:
> 
>         svn rm $R/$P/tags/$T -m "Removing tag $T"
>         svn cp $R/$P/{trunk,tags/$T} -m "Recreating tag $T"
> 
>     To check out the tag:
> 
>         svn co $R/$P/tags/$T
> 
>     To get a log of the tag:
> 
>         svn log $R/$P/tags/$T
> 
> 
> What's being proposed seems to be:
> 
>     To create a new tag:
> 
>         svn alias [-r HEAD] $T $R/$P/trunk
> 
>     To replace an existing tag:
> 
>         svn alias -force [-r HEAD] $T $R/$P/trunk
> 
>     To check out the tag:
> 
>         svn co -r $T $R/$P/trunk
> 
>     To get a log of the tag:
> 
>         svn log -r $T:0 $R/$P/trunk
> 
> 
> Is it just this alternate syntax that's desired, or is there some 
> additional functionality that's gained over Subversion's existing 
> tagging method that I'm just not seeing at the moment?
> 
> The idea of CVS-like tags, or revision aliases, or revision labels, or 
> symbolic names for revisions, has come up on this mailing list many, 
> many times before (you can search the list archives for some of those 
> terms if you're interested). But I don't think anyone has so far 
> succeeded in making a compelling enough case that the benefit of having 
> this feature would outweigh the considerable development effort needed 
> to implement it.
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: users-help@subversion.tigris.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Feb 24, 2006, at 18:11, robert@infotility.com wrote:

> Since we know already that symbolic aliases are useful
> (HEAD, BASE, etc) why not set up a mechanism to allow
> users to make new ones?
>
> Various correspondents have suggested workarounds or
> hacks of various kinds. Thanks guys, but if there's
> evidence that there is widespread desire for this feature
> (namely that it has been solved multiple times by
> multiple persons) why not just build it into the standard release?


I for one just don't understand yet what functionality is being gained.


Given a project named $P and a repository whose root is $R, and a  
standard trunk/branches/tags structure in the project, and a tag  
named $T,


Subversion currently has:

	To create a new tag:

		svn cp $R/$P/{trunk,tags/$T} -m "Creating tag $T"

	To replace an existing tag:

		svn rm $R/$P/tags/$T -m "Removing tag $T"
		svn cp $R/$P/{trunk,tags/$T} -m "Recreating tag $T"

	To check out the tag:

		svn co $R/$P/tags/$T

	To get a log of the tag:

		svn log $R/$P/tags/$T


What's being proposed seems to be:

	To create a new tag:

		svn alias [-r HEAD] $T $R/$P/trunk

	To replace an existing tag:

		svn alias -force [-r HEAD] $T $R/$P/trunk

	To check out the tag:

		svn co -r $T $R/$P/trunk

	To get a log of the tag:

		svn log -r $T:0 $R/$P/trunk


Is it just this alternate syntax that's desired, or is there some  
additional functionality that's gained over Subversion's existing  
tagging method that I'm just not seeing at the moment?

The idea of CVS-like tags, or revision aliases, or revision labels,  
or symbolic names for revisions, has come up on this mailing list  
many, many times before (you can search the list archives for some of  
those terms if you're interested). But I don't think anyone has so  
far succeeded in making a compelling enough case that the benefit of  
having this feature would outweigh the considerable development  
effort needed to implement it.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by "robert@infotility.com" <ro...@infotility.com>.
Quoting "Gale, David" <Da...@Hypertherm.com>:

> Perhaps we could satisfy all of our former CVS-acolytes (myself
> included) with a "svn alias" command (or some such), which would assign
> a human-readable name to a specific revision.  HEAD, PREV, and the like
> already exist, but there's currently no way to assign one of the user's
> own creation.  I'd propose something like:
>
> svn alias [-force] [-r 21134] NEW_LABEL [path-to-repos]
>
> If the command is run within a working copy, the path to the repository
> should be picked up from that.  If no revision is specified, HEAD should
> be assumed.  If the NEW_LABEL alias already exists, an error should be
> thrown unless -force is specified (matches CVS's behavior).  This
> doesn't change the working copy; it creates a versionless alias on the
> repository, which would then be available for future "-r <alias>"
> commands.  I'd also suggest a "svn alias -list" command, which would
> list all of the aliases in the repository and the revisions they point
> to.

I think all of this is right on the mark.

Since we know already that symbolic aliases are useful
(HEAD, BASE, etc) why not set up a mechanism to allow
users to make new ones?

Various correspondents have suggested workarounds or
hacks of various kinds. Thanks guys, but if there's
evidence that there is widespread desire for this feature
(namely that it has been solved multiple times by
multiple persons) why not just build it into the standard release?

Thanks a lot to everyone who has responded.
I appreciate your help.

Robert Dodier

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Darko Miletic <da...@uvcms.com>.
Gale, David wrote:
> Perhaps we could satisfy all of our former CVS-acolytes (myself
> included) with a "svn alias" command (or some such), which would assign
> a human-readable name to a specific revision.  HEAD, PREV, and the like
> already exist, but there's currently no way to assign one of the user's
> own creation.  I'd propose something like:
> 
> svn alias [-force] [-r 21134] NEW_LABEL [path-to-repos]

I like this idea.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Saulius Grazulis <gr...@akl.lt>.
On Friday 24 February 2006 17:52, Vincent Starre wrote:

> Such would need to be client-side in order to make any sense at all, and
> that itself doesnt make any sense at all :)
> ...

I am afraid I can not follow you here. Why it does not make sence?

A list of revision labels would be a per-repository (non-versioned) property; 
when client sets a label, it will be committed and stored in the repo. When 
other clients update, they will get a new list of labels each time. Conflicts 
would be handled as usual. Seems clean.

The only extra thing that comes to me is that you probably do not want some 
labels to be arbitrarily removed (say, you do not want to VER-2.0 label to 
disappear misteriously ;). Thus, some labels should be marked as 
"non-mutable", and/or only an original committer should be able to change the 
label (which would imply that the committers name would be changed along with 
the labels and revision).

Regards,
Saulius.

-- 
Saulius Gražulis

Visuomeninė organizacija "Atviras Kodas Lietuvai"
P.Vileišio g. 18
LT-10306 Vilnius
Lietuva (Lithuania)

tel/fax:      (+370-5)-210 40 05
mobilus:      (+370-684)-49802, (+370-614)-36366

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: [DESIGN] Aliases? (Was: RE: Re: I, too, miss tags.)

Posted by Vincent Starre <vs...@comcast.net>.
Such would need to be client-side in order to make any sense at all, and 
that itself doesnt make any sense at all :)
Even if it would simply pick up svn:aliases from whatever wc it were 
pointed to (again, makes no sense since not all commands take a wc 
argument) it would be near-useless if it werent inheiritable (issue 
1054) and so at the very least I think it should be delayed.

Though this is probably (again) just me, I still think actually doing 
something with an $SVN_ROOT (or, if you prefer, %SVN_ROOT%) 
environmental variable would cut down on all the typing enough that 
these "I miss tags" people would just accept the tags svn already has :)

Of course, the desire to operate on multiple repositories is the primary 
reason for not wanting an $SVN_ROOT. I propose no solution, and say only 
that this limitation also would make an $SVN_ROOT near-useless and make 
very little sense (especially as one who hopes for an svn patch command 
some day)

Yes, the tags svn has support for are longer, but the lack of ambiguity 
that provides is a good thing.
As mentioned in an earlier message in this thread, I think a way to 
specify paths "relative to the wc", or maybe even "relative to another 
path provided elsewhere in the command-line" could solve a lot of the 
"it's too long" issues.
Example (merging 1.9.8->current into wc of a branch):
svn merge svn+ssh://warehouse/main/tags/1.9.8 +../trunk .
or maybe (assuming wc, given no original path):
svn merge +../../tags/1.9.8 +../../trunk .

though perhaps this could help aliases:
svn merge +~1.9.8 +~trunk .
meaning "check aliases in . for 1.9.8, etc", so you could specify which 
aliases to look at.
Maybe even stack them:
svn merge +~trunk+~1.9.8 +~trunk .
meaning "check aliases in . for something called trunk, check it's 
aliases for 1.9.8", etc

All considerations stemming from "even if it's repository-wide, you'd 
still need to give the repository in the first place, so you're still 
right back where you started" (not that we have repository-wide props ;))

In short: I think 1054 is needed for this to work at all :)

Gale, David wrote:

>Kent Borg wrote:
>  
>
>>On Thu, Feb 23, 2006 at 07:44:17PM -0800, Ron wrote:
>>    
>>
>>>I agree.  There is a lot I love about SVN over CVS (and VSS) but
>>>sometimes I just want simple tags.  It is true that subversion's
>>>system can do everything tags can (and then some), but it's more
>>>cumbersome to use.  I don't want to have to know the structure of
>>>the repository (/tags, /release, /trunk, etc, etc) just to snap a
>>>symbolic name on a revision to help my memory down the road.
>>>      
>>>
>>Another former CVS users here, one who likes subversion but one who
>>also finds the lack of tags unnerving.
>>
>>One thing I have is a tags.txt file (that I also keep in subversion),
>>and in it I keep notes.  For some notable versions (e.g., "New feature
>>X is working, I think") I note the date and version number along with
>>a short comment.
>>    
>>
>
>Perhaps we could satisfy all of our former CVS-acolytes (myself
>included) with a "svn alias" command (or some such), which would assign
>a human-readable name to a specific revision.  HEAD, PREV, and the like
>already exist, but there's currently no way to assign one of the user's
>own creation.  I'd propose something like:
>
>svn alias [-force] [-r 21134] NEW_LABEL [path-to-repos]
>
>If the command is run within a working copy, the path to the repository
>should be picked up from that.  If no revision is specified, HEAD should
>be assumed.  If the NEW_LABEL alias already exists, an error should be
>thrown unless -force is specified (matches CVS's behavior).  This
>doesn't change the working copy; it creates a versionless alias on the
>repository, which would then be available for future "-r <alias>"
>commands.  I'd also suggest a "svn alias -list" command, which would
>list all of the aliases in the repository and the revisions they point
>to.
>
>Comments?
>-David
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
>For additional commands, e-mail: users-help@subversion.tigris.org
>
>
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org