On Sat, Jun 4, 2011 at 12:12 PM, Steffen Schuldenzucker <[email protected]> wrote: > More traditional DVCSs like mercurial or git
As Stephen points out, "more traditional" isn't the right term here: darcs pre-dates most of the DAG-based DVCSes :-) > don't have the problem because > a changeset depends on all other changesets in the current repository More precisely, it depends on all previous changesets in the current *branch*. > How do you solve this issue with darcs? AIUI, this is a fundamental problem with the darcs model: darcs under-approximates true patch dependencies since it calculates dependencies using textual overlap. Git et al over-approximate them, as you describe, and rely on the user to specify patch *independence* using branching. > Do you use tags? What, tag every patch to force a linear history (at least within repos)? At that point, you might as well give up on darcs, and use a system that was designed for that model. I'm not aware of a standard solution to your problem, but here's a somewhat hacky possibility: - add a prehook to darcs-record that looks through any added hunks for any references to theorems, citations, etc, and any newly-added definitions. Store these away somewhere. - add a posthook to darcs-record that adds lines of the form ADDED THEOREM: p!=np ADDED CITATION: euler1735 to your commit message, then reads out the list of referenced definitions, invokes `darcs changes` to determine the commit in which each referenced definition was added, and then calls `darcs amend-record` to add the newly-found dependencies. Oh, hang on, amend-record doesn't support --ask-deps. How odd. So that won't work. Let's try ratcheting up the hackiness. Instead of using hooks, invoke `darcs record` from within an expect script (I think we were going to have to use expect anyway, since I can see no non-interactive way of specifying additional dependencies) that 1. Calls `darcs whatsnew` to see what's changed. 2. Searches the diff for any new definitions and references to existing definitions. 3. Calls `darcs changes --matches` to find the patches that added these definitions. 4. Interacts with `darcs record --ask-deps` to add the additional dependencies, and adds the "ADDED THEOREM" lines to the bottom of your commit messages. Anyone got any better ideas? Miles _______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
