Re: [darcs-devel] Any answers for IsiSetup's concerns?
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
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
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
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?
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
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?
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
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?
> 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?
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?
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?
"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
HOORAY! Thank you David, Ganesh, Eric and others. ___ darcs-devel mailing list darcs-devel@darcs.net http://lists.osuosl.org/mailman/listinfo/darcs-devel