
Every Darcs repository I've pulled this year has always showed me this message: ******************************************************************************* Fetching a hashed repository would be faster. Perhaps you could persuade the maintainer to run darcs optimize --upgrade with darcs 2.4.0 or higher? ******************************************************************************* Maintainers! Please run darcs optimize --upgrade

The darcs installed on code.haskell.org is still version 2.02. It
doesn't know about 'optimize --upgrade'. How do I upgrade those
repositories?
On Sat, Oct 9, 2010 at 2:30 PM, Christopher Done
Every Darcs repository I've pulled this year has always showed me this message:
******************************************************************************* Fetching a hashed repository would be faster. Perhaps you could persuade the maintainer to run darcs optimize --upgrade with darcs 2.4.0 or higher? *******************************************************************************
Maintainers! Please run darcs optimize --upgrade

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 10/9/10 08:30 , Christopher Done wrote:
Every Darcs repository I've pulled this year has always showed me this message:
******************************************************************************* Fetching a hashed repository would be faster. Perhaps you could persuade the maintainer to run darcs optimize --upgrade with darcs 2.4.0 or higher? *******************************************************************************
The problem with this message is that it knows that *you* have a darcs that can take advantage of it, but no way to know if other users of the repository can (or, for that matter, if the repository is managed by a capable version of darcs). - -- brandon s. allbery [linux,solaris,freebsd,perl] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.10 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkyw52oACgkQIn7hlCsL25XbLACg0SE1NAbQKkKYY5pCQWQxRJLy noQAoNRlwRCDC78R2Sroo5rq1GkX59+L =FcxO -----END PGP SIGNATURE-----

On Sat, Oct 9, 2010 at 3:06 PM, Brandon S Allbery KF8NH wrote: -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 On 10/9/10 08:30 , Christopher Done wrote: Every Darcs repository I've pulled this year has always showed me this
message: ******************************************************************************* Fetching a hashed repository would be faster. Perhaps you could persuade
the maintainer to run darcs optimize --upgrade with darcs 2.4.0 or
higher? ******************************************************************************* The problem with this message is that it knows that *you* have a darcs that
can take advantage of it, but no way to know if other users of the
repository can (or, for that matter, if the repository is managed by a
capable version of darcs). Welcome to the world of distributed computing :) In general, you can't
really tell what others are doing with their copies of the repository. It's
both good and bad.
Newer darcs clients are compatible with repos created with older darcs
clients and using the newer client will not interfere with using the older
clients on that repo. In other words: It's safe to use the newer clients.
So you can think of your repo as being managed by the latest stable release
if you like.
The Haskell.org server doesn't have to be upgraded. Maintainers can install
a newer darcs locally (cabal install darcs), do the upgrade locally and then
copy the repository back to the haskell.org server. Or, if
haskell.orgservers upgrade their copy of darcs, or you install newer
darcs in your home
dir, you can do the upgrade in-pace.
Some things to keep in mind:
* Darcs 2.4.4 is perfectly backwards compatible with older darcs and older
repos.
* cabal install makes upgrading/installing darcs painfree.
* Newer darcs has fewer bugs and the performance continues to improve as
well[1].
The over arching theme is: It is safe to upgrade your darcs client and you
shoud upgrade your darcs client.
If you have specific questions or concerns, I'd recommend asking on the
darcs-users mailing list[2].
Thanks,
Jason
[1] If you poke around on this page following links you can get a feeling
for how performance changes between releases:
http://wiki.darcs.net/Benchmarks 2.4.4 is a solid release.
[2] http://lists.osuosl.org/mailman/listinfo/darcs-users

On Sat, Oct 09, 2010 at 03:43:42PM -0700, Jason Dagit wrote:
The Haskell.org server doesn't have to be upgraded. Maintainers can install a newer darcs locally (cabal install darcs), do the upgrade locally and then copy the repository back to the haskell.org server.
Really? But then the version of darcs on code.haskell.org wouldn't be able to read those repositories, which would cause darcs over ssh to fail -- wouldn't it? Or am I missing something? -Brent

On Sat, Oct 9, 2010 at 8:52 PM, Brent Yorgey
On Sat, Oct 09, 2010 at 03:43:42PM -0700, Jason Dagit wrote:
The Haskell.org server doesn't have to be upgraded. Maintainers can
a newer darcs locally (cabal install darcs), do the upgrade locally and
install then
copy the repository back to the haskell.org server.
Really? But then the version of darcs on code.haskell.org wouldn't be able to read those repositories, which would cause darcs over ssh to fail -- wouldn't it? Or am I missing something?
You'd be fine. I tried to make this clear by saying: Some things to keep in mind: * Darcs 2.4.4 is perfectly backwards compatible with older darcs and older repos. In particular, the manual[1] says: The --upgrade option for darcs optimize performs an inplace upgrade of your repository to the latest compatible format. Right now means that darcs 1 old-fashioned repositories will be upgraded to darcs-1 hashed repositories (and notably, not to darcs 2 repositories as that would not be compatible; see darcs convert). Jason [1] http://darcs.net/manual/node7.html#SECTION00784000000000000000

On Sat, Oct 9, 2010 at 8:52 PM, Brent Yorgey
On Sat, Oct 09, 2010 at 03:43:42PM -0700, Jason Dagit wrote:
The Haskell.org server doesn't have to be upgraded. Maintainers can
a newer darcs locally (cabal install darcs), do the upgrade locally and
install then
copy the repository back to the haskell.org server.
Really? But then the version of darcs on code.haskell.org wouldn't be able to read those repositories, which would cause darcs over ssh to fail -- wouldn't it? Or am I missing something?
I answered you immediate question in a different email. Now I'll do a bit of explanation on why people want hashed. I should also mention that darcs 2.0.2 (which is the version on c.h.o) does read darcs 2 repositories as support for that feature exists in all darcs 2.x clients. And I personally think that c.h.o should be upgraded to darcs 2.4.4, but that issue is orthogonal to the issue of getting maintainers to upgrade to hashed format repos. Darcs currently has 3 options for repo formats: * old fashioned * darcs 1 hashed * darcs 2 hashed The old fashioned format will eventually be removed as it's not as robust or safe as the hashed variants. The big difference between darcs 1 hashed and darcs 2 hashed is how patches behave when commuted. The darcs 2 hashed variant is a refinement that better handles some corner cases that result from conflicts. Something like 90% of the code in darcs is shared between darcs 1 hashed and darcs 2 hashed. The hashed formats are more robust because: * the hashes guard against accidental modification of patches that are stored on disk * the hashes guard against a buggy darcs client that misapplies patches (the hashes would be off, git has similar safe guards) * the hashed formats have better atomicity and hence better transactional properties If you try the hashed format and find it unpleasant for any reason it's something to report as a bug. We really want (and need) people to switch to hashed, so if it's not good enough we need to know why so we can fix it. Jason

Hey Haskellers (and darcs-users CC'ed) On Sat, Oct 09, 2010 at 23:08:12 +0000, Jason Dagit wrote:
I answered you immediate question in a different email. Now I'll do a bit of explanation on why people want hashed.
Thanks to Jason for the explanation. I've linked to it from http://wiki.darcs.net/RepositoryFormats so that we'll have an easier time in the future encouraging people to move to the hashed format. Also: If you don't have darcs 2.4.4, you can upgrade to the hashed format by doing: cd /srv/code/myrepo darcs get . ~/myrepo-hashed rm -rf ~/myrepo-hashed/_darcs/prefs cp -R _darcs/prefs ~/myrepo-hashed/_darcs/prefs mv ~/myrepo-hashed/_darcs _darcs.new mv _darcs _darcs.old mv _darcs.new _darcs rm -rf ~/myrepo-hashed rm -rf _darcs.old I may put this on the wiki. We had pruned this sort of thing away in favour of the optimize --upgrade command, in the interest of tidiness, but getting recent Darcs into people's hands takes a while. Also, the maintainers behind code.haskell.org are aware about the need for a Darcs 2.4.4 upgrade (I filed a request on 15 Sep). We're looking into an easy way to do this on Debian Etch. See also -------- * http://wiki.darcs.net/RepositoryFormats The three formats in a nutshell * http://wiki.darcs.net/DarcsTwo#hashed-repository-format More about hashed repositories (covers a lot of the same stuff Jason did) * http://lists.osuosl.org/pipermail/darcs-users/2010-August/024941.html Discussion on eventually retiring support for old-fashioned repositories I can guarantee that at least Darcs 2.5 (the upcoming release) will continue to provide full support for old-fashioned repositories. But they are going away eventually so that we can focus on making Darcs better. Thanks! -- Eric Kow http://www.nltg.brighton.ac.uk/home/Eric.Kow For a faster response, try +44 (0)1273 64 2905 or xmpp:kowey@jabber.fr (Jabber or Google Talk only)

One minor but important note: the hashed format is *not* readable with a darcs-1 program: (after a darcs optimize --upgrade in /opt/repositories/controls/darcs/apps/HoBiCaT) franksen@aragon:~/tmp > /usr/bin/darcs --version 1.0.9rc1 (release candidate 1) franksen@aragon:~/tmp > /usr/bin/darcs get /opt/repositories/controls/darcs/apps/HoBiCaT Invalid repository: /srv/csr/repositories/controls/darcs/apps/HoBiCaT darcs: /srv/csr/repositories/controls/darcs/apps/HoBiCaT/_darcs/inventory: openBinaryFile: does not exist (No such file or directory) franksen@aragon:~/tmp > /opt/darcs/bin/darcs --version 2.0.2 (release) franksen@aragon:~/tmp > /opt/darcs/bin/darcs get /opt/repositories/controls/darcs/apps/HoBiCaT Copying patches, to get lazy repository hit ctrl-C... Finished getting.

On Tue, Oct 12, 2010 at 2:02 PM, Ben Franksen
One minor but important note: the hashed format is *not* readable with a darcs-1 program:
Sorry about that. The support for hashed repos existed long before 2.0 was released and so I misremembered the hashed support as appearing in a 1.x release. It looks like you need at least 2.0 to read darcs 1 hashed repos. Upgrading to a modern darcs client is advised and is only a 'cabal install darcs' away. I was under the impression that even debian stable has moved on to 2.x releases. How is it that you have a 1.0.9 release candidate client still? Jason

Jason Dagit wrote:
On Tue, Oct 12, 2010 at 2:02 PM, Ben Franksen
wrote: One minor but important note: the hashed format is *not* readable with a darcs-1 program:
Sorry about that. The support for hashed repos existed long before 2.0 was released and so I misremembered the hashed support as appearing in a 1.x release.
It looks like you need at least 2.0 to read darcs 1 hashed repos.
Upgrading to a modern darcs client is advised and is only a 'cabal install darcs' away. I was under the impression that even debian stable has moved on to 2.x releases. How is it that you have a 1.0.9 release candidate client still?
Have you ever worked at a public institution? I recommend the experience... ;-) Seriously, the server is a debian etch (!) system. Also called "debian old-stable". Of course I have long since installed newer version of darcs, but since I am not root there I cannot put it into /usr/local, so I cannot completely rule out the possibility that other users still use the ancient /usr/bin/darcs and will now have problems when they darcs get. I do _not_ expect that this will lead to any serious trouble, as the latest stable darcs is just a small addition to the PATH away. Still, users should be warned that darcs-2.x is required. Cheers Ben

On Tue, Oct 12, 2010 at 4:41 PM, Ben Franksen
Jason Dagit wrote:
On Tue, Oct 12, 2010 at 2:02 PM, Ben Franksen
wrote: One minor but important note: the hashed format is *not* readable with a darcs-1 program:
Sorry about that. The support for hashed repos existed long before 2.0 was released and so I misremembered the hashed support as appearing in a 1.x release.
It looks like you need at least 2.0 to read darcs 1 hashed repos.
Upgrading to a modern darcs client is advised and is only a 'cabal install darcs' away. I was under the impression that even debian stable has moved on to 2.x releases. How is it that you have a 1.0.9 release candidate client still?
Have you ever worked at a public institution? I recommend the experience... ;-)
Heh. I once was a junior sysadmin at a university. Yes, sometimes the software people used was old.
Seriously, the server is a debian etch (!) system. Also called "debian old-stable". Of course I have long since installed newer version of darcs, but since I am not root there I cannot put it into /usr/local, so I cannot completely rule out the possibility that other users still use the ancient /usr/bin/darcs and will now have problems when they darcs get.
Isn't debian etch a security liability at this point?
I do _not_ expect that this will lead to any serious trouble, as the latest stable darcs is just a small addition to the PATH away. Still, users should be warned that darcs-2.x is required.
Yes, sorry about that. At the time I was having some trouble finding authoritative info on it so I went with my memory, which was wrong. As for your path, I'm reasonably confident that if you put your local darcs at the front of your path then you're good to go. I know that works for local push, what I'm wondering about is push over ssh. It seems easy for you to test in this case. I know darcs finds the right executable by looking in PATH for 'darcs'. What I can't know is whether the server you're using lets you set PATH over ssh invocations that are non-interactive. It's entirely possible that has been disallowed by the sysadmins. And again, darcs-2.x is installed on the haskell.org machine in question. Jason

Jason Dagit wrote:
On Tue, Oct 12, 2010 at 4:41 PM, Ben Franksen
wrote: Seriously, the server is a debian etch (!) system. Also called "debian old-stable". Of course I have long since installed newer version of darcs, but since I am not root there I cannot put it into /usr/local, so I cannot completely rule out the possibility that other users still use the ancient /usr/bin/darcs and will now have problems when they darcs get.
Isn't debian etch a security liability at this point?
Certainly. But the admin (there is just one for a all our machines) can only do so much at a time...
I do _not_ expect that this will lead to any serious trouble, as the latest stable darcs is just a small addition to the PATH away. Still, users should be warned that darcs-2.x is required.
Yes, sorry about that. At the time I was having some trouble finding authoritative info on it so I went with my memory, which was wrong.
No problem. I thought you were still an active darcs developer, so I assumed you must know ;-)
As for your path, I'm reasonably confident that if you put your local darcs at the front of your path then you're good to go. I know that works for local push, what I'm wondering about is push over ssh.
Works only if the remote user be default uses darcs-2, too.
It seems easy for you to test in this case. I know darcs finds the right executable by looking in PATH for 'darcs'. What I can't know is whether the server you're using lets you set PATH over ssh invocations that are non-interactive. It's entirely possible that has been disallowed by the sysadmins.
Yes, but it is no problem, since we abandoned a special user for the repos a while ago and now share stuff using group memebership. This works really well if each user has her own group by default, because then you can set umask to 002 and share directories by giving them to the shared group and setting the S-bit (so that all files and subdirectories created there inherit the group). Oops. How did we drift this far off-topic? Cheers Ben

On Wed, Oct 13, 2010 at 11:56 AM, Ben Franksen
As for your path, I'm reasonably confident that if you put your local darcs at the front of your path then you're good to go. I know that works for local push, what I'm wondering about is push over ssh.
Works only if the remote user be default uses darcs-2, too.
Yes, I guess I didn't explain that well. What I meant is: On the remote host, put your 'user' version of darcs (the darcs-2.x client) first in your path. Whether this is sufficient depends on the ssh-server configuration. For most people, it will be sufficient. I have a feeling you understand that but I'm not certain, hence the repeating :) Jason

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 10/13/10 13:48 , Jason Dagit wrote:
Isn't debian etch a security liability at this point?
Never underestimate the inertia of a system which a professor uses for research or a grad student for their thesis work. - -- brandon s. allbery [linux,solaris,freebsd,perl] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.10 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAky2aKMACgkQIn7hlCsL25W9vgCgvtBEJkSSTNfpk/kUXZ1GcWTW JfkAn3OOKnNaLcKuwk/Kh9OBNOtFxvIF =OD3V -----END PGP SIGNATURE-----
participants (7)
-
Ben Franksen
-
Brandon S Allbery KF8NH
-
Brent Yorgey
-
Christopher Done
-
Eric Kow
-
Jason Dagit
-
Roel van Dijk