"Nick Sabalausky" <a@a.a> wrote in message news:ihne76$4cp$1...@digitalmars.com... > "Lutger Blijdestijn" <lutger.blijdest...@gmail.com> wrote in message > news:ihn21d$2esd$1...@digitalmars.com... >> Nick Sabalausky wrote: >> >>> "David Nadlinger" <s...@klickverbot.at> wrote in message >>> news:ihkub8$1ia4$1...@digitalmars.com... >>>> On 1/24/11 10:20 PM, Nick Sabalausky wrote: >>>>>>> Does Git really not have real revision/changeset numbers? >>>>>> >>>>>>[.] >>>>>> >>>>> >>>>> Not that I've actually used DVCSes much yet, but my understanding is >>>>> that the same can be set of Hg and yet Hg handles revision/changeset >>>>> numbers just >>>>> fine. The nice things (plural) about those is that they're both >>>>> readable >>>>> and >>>>> comparable. >>>> >>>> Hg has no ?real revision/changeset numbers? either - there is a >>>> more-or-less-monotonic number assigned to the various changesets, but >>>> it's only valid for a single, *local* checkout, using them e.g. in a NG >>>> post would be a very wrong thing to do >>>> (http://mercurial.selenic.com/wiki/RevisionNumber). >>>> >>> >>> Even without really using DVCSes it always seemed clear to me that an >>> incremented number would be relative to a particular branch. So if you >>> specify what branch you're talking about (which could usually just be >>> assumed to be the main official one unless otherwise specified), >>> shouldn't >>> that be enough? >>> >>>> Git supports a relative notation as well, which is what I personally >>>> want >>>> to use most of the time anyway (e.g. HEAD^, master~4, something@{"1 >>>> year >>>> ago"}, .). >>> >>> Ah, so it *does* then? Great! Happen to have a link that explains it? >>> >> >> This covers most of it to see what's possible: >> >> http://progit.org/book/ch6-1.html >> >> You can customize git log with a format string, try this for example: >> >> git log --pretty=format:"%h - %an, %ar : %s %d" >> > > Ahh, that's not remotely what I was hoping it was. Everything is all > relative to the current version which means that *every* time you commit, > *every* changeset gets completely renamed (HEAD@{5} becomes HEAD@{6}, > etc), and there doesn't appear to be any syntax to refer to the next > changeset (only the previous), which makes it barely useful at all. And > not only that, but they *dissapear* after a certain amount of time. > > Browsing through http://hginit.com/index.html, it looks like with Hg, > everything works just as well as with SVN, the only difference being that > you need to remember to specify which repository you're talking about > whenever you give a number. > > Obviously I'm not saying "DMD should have gone Hg", I'm just kinda shocked > by how horrid Git's approach is for referring to changesets. (Personally, > that alone would be enough to get me to use Hg instead of Git for my own > projects. Heck, I've become pretty much sold on the idea of DVCS, but > because of this I think I'd actually sooner use SVN for a new project than > Git.) >
Additionally, Hg's approach provides a trivial way to disambiguate hash collisions. I know that Git book brushes it off as "very rare", but it's not as if nobody's ever going to run into it.