tech-repository archive

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

Re: preliminary version control requirements



David Holland <dholland-tech%netbsd.org@localhost> writes:
> On Sat, Jul 26, 2008 at 09:38:29PM -0400, Perry E. Metzger wrote:
>  > >    - doesn't require importing things we don't want into base
>  > 
>  > Not sure what that means.
>
> Well, as an extreme example, a version control system written in PHP
> would not be accepted.

Okay, granted. If you want to have that in a requirements list, I
suggest explaining it a bit more clearly, since I'm unlikely to be the
only person confused.

>  > >    - allows checkout without cloning entire history
>  > 
>  > I don't necessarily agree with the last bit there. It seems reasonably
>  > arbitrary. There are systems that work very well but require local
>  > copies of the repository. In a modern environment, where disk is quite
>  > cheap, that seems fine to me. (And yes, you can mount a 500GB disk you
>  > bought for $80 on your Vax over NFS.)
>
> Disk is not always cheap, and NFS mounting the source tree from
> somewhere where it is isn't always an option.
>
> I have a number of machines with source trees that don't have enough
> space for the full history, and I'm doubtless not alone.

What's the reason you can't NFS mount in those cases? (I don't
disbelieve you, I just want to understand better.)

> Of course, this depends to some extent on how big the full history is
> compared to the size of the checked out tree on its own. If it adds
> 10%, that's probably ok. If it triples the size, that's not.

Git is apparently famous for how well the compression works -- the X
people claim that the whole repo is a small multiple of the checkout
in size.

>  > >    - somehow preserves old file version numbers on import for reference
>  > >    - uses version numbers that are numbers, not hash codes
>  > 
>  > I'm not sure that is a critical requirement. Most modern systems don't
>  > even have individual file version numbers anyway, they have repository
>  > versions with atomic commits across the repo.
>
> Preserving the old version numbers is important because they're
> recorded all over everywhere (PRs, mailing lists, etc.) and losing the
> ability to correlate all those reports with the source tree would be a
> problem.

I think there isn't a single VCS that will do that right now. If that
were really a requirement, we could never upgrade from CVS. I suspect
we're just going to have to manage old file version information by
keeping the CVS tree around for a while.

> Meanwhile, there are real reasons why hash codes are bad; they're hard
> for humans to use compared to small integers, and they're not ordered
> so you can't tell if the version you've got is newer or older than
> some version someone's posting about wihout digging around.

The lack of ordering is certainly a problem. The length might not be a
problem in practice -- git and the other systems that use them seem to
allow shortest unambiguous prefix, and that's generally only five or
six characters.

>  > >    - supports rcsids/keyword expansion
>  > 
>  > Most of them don't per se do this, in that there aren't version
>  > numbers for individual files in any modern system so there aren't
>  > expandable RCSID equivalents with a file's individual version number.
>
> Why would it have to be a file's individual version number? It just
> has to indicate what stuff a binary file was built with. But we do
> need something that does that.

That particular requirement can be met. However, there is an implicit
requirement here that I want to mention is not going to be met.

> Most of the newer systems not only won't do rcsids but will explain to
> you at substantial length why they think you shouldn't want them, but
> that doesn't make them right.
>
> We could conceivably get rid of all the existing rcsid strings and
> arrange something that didn't require keyword expansion directly in
> files, but it would be a lot of work and a big hassle.

I wouldn't mind having to replace them across the whole tree with
different names, that would be fairly straightforward work. I agree
that having to set up a rube goldberg mechanism would be a big issue.

>  > >    - doesn't exhibit any excessively strange semantic excursions
>  > 
>  > I don't know what that means.
>
> Bizarre behavior. The first example that comes to mind is the way tags
> work in subversion.

Tags are just version numbers or (if you prefer) tree clones. Why is
that "bizarre"?

I want to caution something overall here. I don't think we can achieve
"perfection". The set of everything you are asking for might be the
null set. We have to be careful not to overconstrain the problem.


Perry
-- 
Perry E. Metzger                perry%piermont.com@localhost


Home | Main Index | Thread Index | Old Index