[darcs-users] revision identifiers

Nicolas Pouillard nicolas.pouillard at gmail.com
Fri Mar 28 22:51:31 UTC 2008


Excerpts from Declan Naughton's message of Fri Mar 28 17:26:27 +0100 2008:
> On Thu, Mar 27, 2008 at 5:16 AM, Max Battcher <me at worldmaker.net> wrote:
> >
> > Declan Naughton wrote:
> >  > In revision control systems like Mercurial and git, every time the
> >  > repository is updated (recorded to in darcs terms) a new revision
> >  > identifier is associated with it's new state, so that it can be
> >  > referred to for checkouts and such.
> >  >
> >  > In darcs, users MUST MANUALLY use tags, this I consider quite a
> >  > downfall. Would it be a bad or a good idea for darcs to checksum the
> >  > context and record this with records, and, (being the revision
> >  > identifier) printing this out in 'darcs changes', providing for 'darcs
> >  > get --rev=xxxxxxxxx' etc?
> >  >
> >  > Or what am I overlooking?
> >
> >  Generally the consensus is that the distributed nature of darcs, plus
> >  the ability to cherry-pick individual patches, doesn't lend itself to
> >  useful universally unique numbers for revisions.  Various non-universal
> >  numbering schemes have been suggested, but thus far none have been
> >  implemented.  (Some have even suggested automagic tagging to some extent
> >  or another.  You could write an external script to do something of that
> >  sort if you really wanted... but said script would probably be better
> >  off recording useful context files and leaving tags for meaningful states.)
> >
> >  Anyway, the easiest way to say "here's a specific non-tagged version of
> >  the repository that I want you to get" in darcs is to pass along a
> >  context file (the output of ``darcs changes --context``) and you can
> >  ``darcs get remote:repo --context=some/file.context``.  Context files
> >  are also very useful when repositories cannot directly communicate
> >  (firewall, etc) but need to share states so that patches can be emailed
> >  back and forth.  Context files are very much a darcs developers' best
> >  friend for communicating repository state and I don't think sending a
> >  simple context file is any more/less confusing/complicated/tough than
> >  trying to copy and paste some arbitrary n-digit numeral.  Maybe I'll
> >  write an article on my impressions of Darcs and Context files versus Tags...
> >
> >  More ways of getting other developers to specific states is to focus on
> >  good patch style.  Patches should be reasonably "atomic" (do what they
> >  say they do, contain everything needed or directly depend on anything
> >  not included), which is something often preached by all VCSes, but Darcs
> >  generally rewards good behavior a bit better than most.  Darcs offers a
> >  number of ways to say get me "patch x" and everything it depends on, and
> >  if things are reasonably atomic, that takes care of 80% of your needs to
> >  jump to a specific "revision".  If your patches have generally
> >  informative names and comments you can do that very well with darcs'
> >  interactive push/pull.  Memorable patch names can be searched for by
> >  command line with regexes and there is a "universally unique" hash
> >  identifier for every patch if you want a very specific command line that
> >  can be copy and pasted.
> >
> >  Tags are indeed the way to name a specific collection of patches and
> >  there is basically no overhead for tags and creating a new tag takes
> >  only time to name it, so I don't see manually "required" tags as that
> >  much of a downfall anyway.
> >
> >  --
> >  --Max Battcher--
> >
> 
> I think the power that darcs allows in cherry-picking is wondrous, but
> don't you think it lets itself down to newcomers because it's so much
> more of a task to simply get a specific revision on which to build
> compared with Hg and git? They will need to get the tag previous to
> the revision they want, and then 'darcs pull' and run through the
> patches (unless the revision is tagged, which I guess would be most
> common, but still). This is more flexible (and extremely useful. Since
> darcs is available with this power, I'm trying to consider only this,
> and I think that's why it needs to focus on usability and
> documentation, because it's easy to just fuck darcs off and use Hg),
> but I think it's a fairly common use case to wish to reproduce a
> revision without any differences to how the repository produced it,
> and therefore revision identifiers like Hg and git use would be useful
> (even if only slightly after users become more adept) as well as
> context files.
> 
> Consider how daunting it is for a Hg user trying to grasp darcs to run
> 'darcs changes' and find absolutely no identifier to jump back to a
> mildly-old version of the repository... (something about unrecord
> frightens me, but do explain how it can/can't be used if it would
> help)
> 
> Why can't checksumming the context produce a suitable identifier, I
> must ask? What are the uses in it being "universally unique" that we
> would miss out on, anyhow? We can still seek through the repository
> history and get specific revisions?

Also  remember  that  context stops at tags. So, if you've tagged recently the
context will be quite small.

-- 
Nicolas Pouillard aka Ertai
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
Url : http://lists.osuosl.org/pipermail/darcs-users/attachments/20080328/987eaf44/attachment.pgp 


More information about the darcs-users mailing list