Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread David Roundy
Hi Ferenc,

I guess your main question is about whether darcs will support
management of permissions and symlinks?

I've written on many occasions, pointing out that I don't think that
management of permissions would be a good idea, with the sole
exception of the execute bit.  The reason is that in general, each
copy of a repository has different requirements for their permissions.
 Some copies may require that all files be members of a particular
group, and be group-writable, for instance.  So if some bizarre
permissions-management scheme were added, it'd have to be disabled by
default.  I understand that some people use darcs for strange things,
but I refuse to make darcs *worse* for its primary purpose of managing
source code, just so it is better for doing strange things like
managing /etc files.  Now darcs should *preserve* permissions, and
it'd be a good idea for it (when possible) to preserve ownership.

Symlinks would be reasonable, but noone has bothered to implement
them.  But adding symlink support is really orthogonal to darcs-2.
This support could have been added any time in the last four years
without great difficulty, and can be added any time after the darcs-2
release with even less difficulty.  If noone is interested in adding
this feature, I can only conclude that not all that many people are
interested in having this feature.

David

On Dec 11, 2007 10:30 AM, Ferenc Wagner <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I guess at least some of you have already read
> http://www.isisetup.ch/wiki/IsiSetupRevisionControl, which describes
> why IsiSetup moved away from using Darcs while its source is still
> being managed by Darcs.  A very good perspective in my opinion.
>
> Now I wonder (possibly in lights of the upcoming Darcs 2) what answers
> the Darcs community has for the raised concerns.  I'm not too
> interested in performance (except for exponential complexity) but
> rather in "merge capabilities" (what's that, anyway?) and managing
> links and permissions (though metastore can arguably help with that).
>
> I've skimmed http://wiki.darcs.net/DarcsWiki/ConflictsFAQ, feel free
> to point out other useful sources of information.
> --
> Thanks,
> Feri.
> ___
> darcs-devel mailing list
> darcs-devel@darcs.net
> http://lists.osuosl.org/mailman/listinfo/darcs-devel
>
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread Simon Marlow
David Roundy wrote:

> === Creating a repository in the darcs-2 format ===
> 
> Converting an existing repository to the darcs-2 format is as easy as
> 
> darcs convert oldrepository newrepository

I did this for GHC's repository.  I left it running last night, and I'm not 
sure whether it completed successfully - I certainly have a repository, but 
it had a _darcs/lock file left in it.  It seems to have all the patches in 
_darcs/patches, and the last one is dated about 3.5 hours after I started 
the conversion.

$ darcs2 query repo
   Type: darcs
 Format: hashed, darcs-2-experimental
   Root: /64playpen/simonmar/ghc-darcs2
   Pristine: HashedPristine
  Cache: thisrepo:/64playpen/simonmar/ghc-darcs2
Num Patches: 17532

A few quick performance tests.  The darcs2 repository is on a local filesystem:

$ time darcs2 whatsnew -s
No changes!
2.25s real   2.04s user   0.18s system   98% darcs2 w -s

In a darcs1 GHC repository mounted over NFS:

$ time darcs whatsnew -s
No changes!
0.13s real   0.03s user   0.05s system   58% darcs w -s

"darcs changes" seems to have a big performance regression:

$ time darcs2 changes --last=10 >/dev/null

I killed it after 3 minutes of CPU time and the process had grown to 1.4Gb. 
  darcs1 does this in 0.05 seconds using 2Mb.  Perhaps the repository is 
corrupted somehow?

I've tarred up the repo and put it here:

   http://darcs.haskell.org/ghc-darcs2.tar.gz

It is also online here:

   http://darcs.haskell.org/ghc-darcs2

---
Documentation nits

The 'darcs show' documentation appears in two places, under "Seeing what 
you've done" and "Advanced examination of the repository".

The docs still say that two patches making the same change are considered 
to be in conflict.

I can't find any docs about using lazy patch downloading and the 
~/.darcs/sources file.

Cheers,
Simon
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread Simon Marlow
Simon Marlow wrote:

> It is also online here:
> 
>   http://darcs.haskell.org/ghc-darcs2

Getting a lazy partial repository over http isn't particularly quick:

   $ time darcs2 get http://darcs.haskell.org/ghc-darcs2 --darcs-2
   Finished getting.
   495.19s real   2.08s user   1.12s system   0% darcs2 get 
http://darcs.haskell.org/ghc-darcs2 --darcs-2

Compared to a --partial get of the GHC repository:

   $ time darcs get --partial http://darcs.haskell.org/ghc
   Copying patch 179 of 179... done.
   Applying patch 178 of 178... done.
   Finished getting.
   181.93s real   9.43s user   1.42s system   5% darcs get --partial 
http://darcs.haskell.org/ghc

Cheers,
Simon

___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread Simon Marlow
A small UI issue:

$ darcs2 get http://darcs.haskell.org/ghc-darcs2

darcs failed:  Incompatibility with repository 
http://darcs.haskell.org/ghc-darcs2:
Cannot mix darcs-2 repositories with older formats


Since I'm trying to get a darcs-2 format repository, I would expect it to 
just work, and give me a darcs-2 copy of it, without having to specify 
--darcs-2.

Cheers,
Simon
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread zooko
On Dec 12, 2007, at 4:15 AM, David Roundy wrote:

> I've written on many occasions, pointing out that I don't think that
> management of permissions would be a good idea, with the sole
> exception of the execute bit.  The reason is that in general, each
> copy of a repository has different requirements for their permissions.

Do you think that this is analogous to two different repositories  
containing source code having different requirements for the source  
code?

For example, there might be one repository that requires a certain  
patch or set of patches and another that requires excluding that set,  
even though the two repositories exchange other patches not in that set.

This is often requested by users on the darcs mailing list, I've  
noticed.

If darcs supported that kind of workflow easily, would such support  
also apply to management of permission bits?

Regards,

Zooko

___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread David Roundy
Thanks for your report!

On Dec 12, 2007 8:45 AM, Simon Marlow <[EMAIL PROTECTED]> wrote:
> David Roundy wrote:
>
> > === Creating a repository in the darcs-2 format ===
> >
> > Converting an existing repository to the darcs-2 format is as easy as
> >
> > darcs convert oldrepository newrepository
>
> I did this for GHC's repository.  I left it running last night, and I'm not
> sure whether it completed successfully - I certainly have a repository, but
> it had a _darcs/lock file left in it.  It seems to have all the patches in
> _darcs/patches, and the last one is dated about 3.5 hours after I started
> the conversion.

Hmmm.  I'll have to try that again myself.  But after my computer
comes back up (it's in Oregon, and is either crashed or off due to a
power outage).

darcs check should work to indicate the conversion went fine.

> $ darcs2 query repo
>Type: darcs
>  Format: hashed, darcs-2-experimental
>Root: /64playpen/simonmar/ghc-darcs2
>Pristine: HashedPristine
>   Cache: thisrepo:/64playpen/simonmar/ghc-darcs2
> Num Patches: 17532
>
> A few quick performance tests.  The darcs2 repository is on a local 
> filesystem:
>
> $ time darcs2 whatsnew -s
> No changes!
> 2.25s real   2.04s user   0.18s system   98% darcs2 w -s
>
> In a darcs1 GHC repository mounted over NFS:
>
> $ time darcs whatsnew -s
> No changes!
> 0.13s real   0.03s user   0.05s system   58% darcs w -s

The difference here is that I haven't implemented the time-stamp
synchronizing feature for hashed repositories.  I wasn't sure it was
still needed (and would be nice to drop, as it's a bit hackish), since
for the darcs repository whatsnew is pretty fast.  Will have to add it
to the TODO list.

It's also possible that you're getting hurt by the cost of checking
the sha1 hashes, which we currently do in a rather paranoid way (I
like being paranoid, except when it hurts).  If this is the case, we
could speed things up by using a faster sha1 hash function.  Right now
we use on written in Haskell, but it wouldn't be hard to bind to a
well-optimized implementation (openssl or something).

But I guess I've been running on local disks long enough that I've
forgotten the cost of opening up a file over nfs... I'd best go ahead
and make this change.  It's potentially a little painful, as
synchronizing the modification time of files in the pristine cache
doesn't interact well with hard linking between files in the pristine
caches of different repositories.  Which means either we live with a
performance cost to hard linking of pristine caches, or we store
modification times in the file contents of the pristine cache, so that
we could have multiple modification times per file.  :(

Another optimization (which could gain us just a simple factor of two,
potentially) would be to check the hashes of files in the working
directory against the known sha1 hash of the pristine cache.  This
would save us half the IO (in the normal case where most files are
unmodified), and would maintain the robustness of not depending on
file modification times (which has always been a rather fragile
optimization).

> "darcs changes" seems to have a big performance regression:
>
> $ time darcs2 changes --last=10 >/dev/null
>
> I killed it after 3 minutes of CPU time and the process had grown to 1.4Gb.
>   darcs1 does this in 0.05 seconds using 2Mb.  Perhaps the repository is
> corrupted somehow?

Yikes! That's actually a very surprising bug.  I'd be interested in
hearing if it shows up if you run a darcs2 optimize first? Either way,
of course, it's a serious bug, but that'd give a hint where the
trouble is.

> I've tarred up the repo and put it here:

Thanks! I'll take a look at it when I get a chance.

> Documentation nits
>
> The 'darcs show' documentation appears in two places, under "Seeing what
> you've done" and "Advanced examination of the repository".

That should be easy to fix (once I get myself a working copy of darcs'
repository...).

> The docs still say that two patches making the same change are considered
> to be in conflict.

:( I should fix that...

> I can't find any docs about using lazy patch downloading and the
> ~/.darcs/sources file.

This is in the Prefs section
(http://darcs.net/doc-unstable/node5.html#SECTION0051),
but that's not really the best place for it.  There should definitely
be a section there, but more needs to be added to the get
documentation.

Thanks for taking the time to try this out!

David
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread David Roundy
On Dec 12, 2007 10:59 AM, zooko <[EMAIL PROTECTED]> wrote:
> On Dec 12, 2007, at 4:15 AM, David Roundy wrote:
>
> > I've written on many occasions, pointing out that I don't think that
> > management of permissions would be a good idea, with the sole
> > exception of the execute bit.  The reason is that in general, each
> > copy of a repository has different requirements for their permissions.
>
> Do you think that this is analogous to two different repositories
> containing source code having different requirements for the source
> code?

I don't think so, I think that having darcs manage permissions would
be like having it manage file ownership.  We could do that, but file
ownership is meaningless on most other computers.  Similarly the
meaning of "g" and "o" are different on each computer, since the group
is different, and the set of users with access to the computer are
different.

> For example, there might be one repository that requires a certain
> patch or set of patches and another that requires excluding that set,
> even though the two repositories exchange other patches not in that set.
>
> This is often requested by users on the darcs mailing list, I've
> noticed.

Indeed it has been, and a "patch ignore" file (possibly updated by
darcs itself) is quite reasonable.

> If darcs supported that kind of workflow easily, would such support
> also apply to management of permission bits?

I'm not sure how this would relate.  I suppose you're suggesting that
one could simply never pull changes that affect permissions, thus
isolating those patches, in an attempt to maintain sanity?

The trouble is that darcs should not track permissions at all, in the
normal case, and it gets really ugly trying to come up with a
reasonable semantics that allows people with strange repositories
(e.g. /etc) to track permissions (beyond just the executable bit)
without harming everyone else.

David
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread zooko
Dear darcs-devel folks:

Oh by the way, let me say: "HOORAY!".  I suspected that darcs 2 was  
never going to actually happen, and now I see that it *is* going to  
happen!  Way to go!  This breathes new life into the darcs project!

Regards,

Zooko

___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread zooko
> However, darcs shouldn't be unsetting your "x" bit. I'm pretty  
> certain that
> is a bug!  :(

I spoke loosely.  It doesn't actually unset the bit on an actual  
file, but when I do "darcs get" it creates a new physical file  
without the +x bit.  I perceive this as "unsetting" the bit on the  
"logical" file.

Other users that I have observed do, too.

--Z
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel



Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread David Roundy
On Wed, Dec 12, 2007 at 09:29:06AM -0800, zooko wrote:
> On Dec 12, 2007, at 9:14 AM, David Roundy wrote:
> 
> >>Do you think that this is analogous to two different repositories
> >>containing source code having different requirements for the source
> >>code?
> >
> >I don't think so, I think that having darcs manage permissions would
> >be like having it manage file ownership.  We could do that, but file
> >ownership is meaningless on most other computers.  Similarly the
> >meaning of "g" and "o" are different on each computer, since the group
> >is different, and the set of users with access to the computer are
> >different.
> 
> So, concretely, suppose that there were a darcs patch type for  
> changing permissions, and suppose that a patch of that type could  
> express something like "make this file unreadable by people that  
> aren't the owner".  Actually, let's back up and ask "What kinds of  
> changes to permissions do people need?".  The IsiSetup folks, for  
> example want to manage certain kinds of permissions on files, and  
> apparently git+cogito gives them the ability to do this to their  
> satisfaction.  I would like to know what exactly they need to do.
> 
> I'm not convinced that it is a priori impossible for darcs to do as  
> well as git or SVN or other tools do.

On that page they also complain about git only managing the executable
bit.  I agree that managing the executable bit is a good idea.  But they'd
like more than git gives them, and that's where I disagree (and agree with
Linus).

> I know that I personally often want darcs to stop unsetting the "x"  
> bit.  We could imagine a "permission settings" patch type and patches  
> which say "set executable" and "set not-executable".  I know you've  
> already said that this would make sense.  I had thought, until your  
> recent message, that progress on this front, as well as on the  
> symlink front, was waiting for darcs-2 patch theory to be sorted out.

Certainly, I'm not going to be adding features like this myself until
darcs-2 is out.

However, darcs shouldn't be unsetting your "x" bit. I'm pretty certain that
is a bug!  :(
-- 
David Roundy
Department of Physics
Oregon State University
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread zooko
On Dec 12, 2007, at 9:14 AM, David Roundy wrote:

>> Do you think that this is analogous to two different repositories
>> containing source code having different requirements for the source
>> code?
>
> I don't think so, I think that having darcs manage permissions would
> be like having it manage file ownership.  We could do that, but file
> ownership is meaningless on most other computers.  Similarly the
> meaning of "g" and "o" are different on each computer, since the group
> is different, and the set of users with access to the computer are
> different.

So, concretely, suppose that there were a darcs patch type for  
changing permissions, and suppose that a patch of that type could  
express something like "make this file unreadable by people that  
aren't the owner".  Actually, let's back up and ask "What kinds of  
changes to permissions do people need?".  The IsiSetup folks, for  
example want to manage certain kinds of permissions on files, and  
apparently git+cogito gives them the ability to do this to their  
satisfaction.  I would like to know what exactly they need to do.

I'm not convinced that it is a priori impossible for darcs to do as  
well as git or SVN or other tools do.

I know that I personally often want darcs to stop unsetting the "x"  
bit.  We could imagine a "permission settings" patch type and patches  
which say "set executable" and "set not-executable".  I know you've  
already said that this would make sense.  I had thought, until your  
recent message, that progress on this front, as well as on the  
symlink front, was waiting for darcs-2 patch theory to be sorted out.

Regards,

Zooko

___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] Any answers for IsiSetup's concerns?

2007-12-12 Thread Ferenc Wagner
"David Roundy" <[EMAIL PROTECTED]> writes:

> I guess your main question is about whether darcs will support
> management of permissions and symlinks?

Er, not really.  At least not mainly.  I didn't express it well, but I
wondered what the Darcs developers' current reaction could be for the
IsiSetup people.  You almost covered it, let's see:

I'm somewhat aware of the issues surrounding permissions, and as zooko
mentined, other tools don't fully support this either.  But Darcs is
still somewhat behind in this field.

> I understand that some people use darcs for strange things, but I
> refuse to make darcs *worse* for its primary purpose of managing
> source code, just so it is better for doing strange things like
> managing /etc files.  Now darcs should *preserve* permissions, and
> it'd be a good idea for it (when possible) to preserve ownership.

That's fair and I'm fine with it.  As I understand it, Metastore is
here to help out, all we need is good interoperation.  Maybe that's
already here, too.

> Symlinks would be reasonable, but noone has bothered to implement
> them. [...]  If noone is interested in adding this feature, I can
> only conclude that not all that many people are interested in having
> this feature.

Sure, symlinks aren't necessary either for source code management.
And good to hear it would be easy to add.

Now what's this bussiness about "merge capabilities"?  Do you know
what's missing, how's git or anything else better?
-- 
Thanks,
Feri.
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre1, the first prerelease for darcs 2

2007-12-12 Thread Simon Michael
HOORAY! Thank you David, Ganesh, Eric and others.

___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel