[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Arx-users] ArX and simplicity

From: Walter Landry
Subject: Re: [Arx-users] ArX and simplicity
Date: Fri, 29 Apr 2005 22:32:32 -0400 (EDT)

Kevin Smith <address@hidden> wrote:
> Walter Landry wrote:
> > However, this actually touches on something that has always bothered
> > me.  I don't like it that we have to specify archives so much.  It
> > seems that other systems manage to get away without having explicit
> > names for archives at all.  I think the principle reason is that they
> > do not try to support lightweight branches.
> > 
> > In other systems, if you want to make a first class branch of a
> > project, you have to download the entire history of the project.  With
> > ArX and tla, you just put a pointer in your own archive to the parent
> > archive.  In order for that pointer to work, it can't use a URL,
> > because URL's can change.  So they use a symbolic name.
> What if it were a URL? If it moves, the link breaks. That's the risk you
> take for not getting a full copy.
> Or, taking the opposite position, yes, I think I would be ok losing that
> feature if it *dramatically* simplified other stuff. Which it probably
> would.

I don't want to lose lightweight branches.  I have read too many
complaints in other systems about people lugging around 9 GB of
history because there is no way to get rid of it.  Lightweight
branches solve that problem.

> The whole concept of an archive having a "name" that is different from
> its location seems somewhat odd, actually.

Archives can move or be mirrored.  It should be easy to treat those
copies as the same thing as the original.  Symbolic names give you that.

> > But symbolic names suck for two reasons:
> > 
> >     1) They need to be unique, so they become long and unwieldy.
> > 
> >     2) People ignore guidelines, and end up with names that are not
> >        unique anyway.
> True. A URL is guaranteed to be unique. Or at least unambiguous.
> > The solution to the first problem is to make the use of archive names
> > much more implicit.  One possiblity would be to get rid of the default
> > archive and instead use the archive of whatever project tree we are
> > in.
> This is an area of ArX that I don't yet understand. More explanation
> would be helpful.

I am confused about what you are confused about ;)

> > The solution to the second problem is to replace the current user
> > generated scheme for choosing archive names with UUID's.  Bitkeeper
> > uses something like this, although in a very different way.  Then you
> > are guaranteed to never have conflicts.  It would also make me more
> > comfortable allowing archive aliases, because they could never be
> > mistaken for real archive names.  Aliases would also make it easier to
> > type archive names when you are forced to.
> Aliases would be SOOOO helpful. Even if they are required to start with
> a colon or something like that to clearly identify them. I just want to
> refer to :arx instead of the official archive name. That is, if I
> continue to have to refer to archives by name at all.

With hashes for archive names, the only restriction would be that they
are not exactly 64 characters long.  However, prefixing with a colon
would disambiguate it from a branch name.

> > The colon ":" is already used to determine whether we are looking at a
> > url (http://foo/bar) or an archive name (address@hidden).
> Hmmm. Maybe reserving some other character would be worthwhile (comma,
> ampersand, number sign, whatever). Or using the colon and preventing
> archive names that are also protocol names (file, http, https, etc).

How about the pound sign "#"?  It is already used in URL's to refer to
an internal part of a web page.  This would just be extending it to
refer to an internal part of an archive.

However, I don't think that using a different character will really
solve the problem.  The real problem is that you can type 

  arx browse foo

and you don't know whether you meant "foo" to be an archive or branch.
Using a different separator won't help, because you forgot to put it
there in any case.

> I don't even remember all the commands where I had trouble knowing
> whether I was referring to an archive or a branch, and how many allowed
> either one. Another avenue to avoiding the ambiguity would be to avoid
> any case where a command can take either one interchangeably.

Some commands are recursive, so they can take an archive, a branch, or
a revision.  "browse", "update-listing", and "mirror" are some.  Using
something like the -A argument, where you are then not allowed to
specify the archive with the branch, might work.  So browse would be

  arx browse -A archive branch.subbranch,revision

and it would complain if you tried

  arx browse archive/branch.subbranch,revision

The main problem that I see with this is that it won't be that
uncommon to get something like "archive/branch.subbranch,revision"
given to you (e.g. from a script), and having to manually split it up
could cause problems.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]