[AstroPy] proposal for astropy version control software and respository

Mark Sienkiewicz sienkiew at stsci.edu
Mon Jul 18 17:51:30 EDT 2011

> I'm not sure what you mean by "real" tags in subversion.  Git has tags
> that are as simple as "git tag <tagname>" (the current commit - in git
> parlance, HEAD) or "git tag <tagname> <commit-hash>" (tag some other
> commit).

And presumably I can ask git to "update" or whatever to a specific tag 
name.  Once I update to a tag, a commit does not change the tagged data 
-- it just makes a new revision.

Yes, that would be a real tag.

Subversion does not have tags or branches at all, but we pretend it 
does.  By convention, you have a directory named /trunk where your code 
lives; to make a branch or a tag, you copy that directory to 
/branches/xxx or /tags/xxx.  Since there is no difference between /trunk 
and /tags/xxx except the name, nothing prevents you from committing to 
the tagged code.  This is relatively easy to do by mistake, compared 
with CVS where you would have to explicitly do a commit and then issue 
tag-altering commands to change the content of a tag.

> Generally the convention is to use tags locally as shorthand for some
> commit you often go back to, and publically tag version numbers.  Then
> the "git describe" command basically gives you all the information you
> need.

So, for example, if you have a continuous integration system that does 
builds/tests every day, it would start by tagging the source code it is 
about to build, instead of just noting a revision number in the logs.

As a user, I can see what source code the CI system used by telling git 
"get me this tag", where I know the name of the tag that the CI assigned.

More information about the AstroPy mailing list