New submission from Adrian Irving-Beer <[EMAIL PROTECTED]>:

Hi, found three bugs and thought I'd report them.

Bug #1:  "darcs whatsnew --look-for-adds" implies --summary.
Bug #2:  Add a file, set as boringfile, "record --look-for-adds",
         bogus remove in next whatsnew.
Bug #3:  Repo A host X ==get==> repo B host X ==get==> repo C host Y,
         repo C cannot see repo A's patches.

Here's #1 and #2, with commands spaced for readability:

        % darcs --version
        2.0.0pre3 (unknown)

        % darcs init

        % echo -n 'testing' > _darcs/prefs/author

        % echo 'test file 1' > foo

        % darcs whatsnew --look-for-adds
        a ./foo

        % darcs record --look-for-adds --all -m"Patch 1"
        Finished recording patch 'Patch 1'

        % darcs whatsnew --look-for-adds
        No changes!

        % echo 'test boringfile' > bar

        % darcs setpref boringfile bar
        Changing value of boringfile from '' to 'bar'

        % darcs whatsnew
        changepref boringfile

        bar

        % darcs whatsnew --look-for-adds
        a ./bar

        % darcs whatsnew --look-for-adds --no-summary
        addfile ./bar
        hunk ./bar 1
        +test boringfile
        changepref boringfile

        bar

This demonstrates bug(?) #1:
The --look-for-adds option automatically implies --summary.

        % darcs record --look-for-adds --all -m"Patch 2"
        Finished recording patch 'Patch 2'

        % darcs whatsnew --look-for-adds
        R ./bar
        a ./bar

This demonstrates bug #2:
Adding a boringfile via --look-for-adds seems to do weird stuff.

        % echo 'test file 3' > baz

        % darcs record --look-for-adds --all -m"Patch 3" 
        Finished recording patch 'Patch 3'

        % darcs whatsnew --look-for-adds
        R ./bar
        R ./baz
        a ./bar
        a ./baz

Bug #2 persists on files added after the boringfile.
This is probably the most disturbing aspect.

        % darcs add bar

        % darcs whatsnew --look-for-adds
        R ./baz
        a ./baz

        % darcs add baz

        % darcs whatsnew --look-for-adds
        No changes!

            [Bug #2's leftovers have been cleaned up;
             now we see if the effect continues.]

        % echo 'test file 4' > qux

        % darcs record --look-for-adds --all -m"Patch 4"
        Finished recording patch 'Patch 4'

        % darcs whatsnew --look-for-adds
        No changes!

Once you manually clean up the debris from bug #2, it doesn't reoccur.

To reproduce bug #2, it seems to require that you create a file in the
same patch as you assign it as the boringfile, and that you record it
via --look-for-adds.  If you do them in separate patches, or if you
"darcs add" the file, the bug goes away.

There's also bug #3, which is related to the lazy patch fetching.
Here's the command flow, with the path and host in the prompt:

[on host 'alpha']

        alpha:/tmp/foo% darcs init --darcs-2

        alpha:/tmp/foo% echo -n 'testing' > _darcs/prefs/author

        alpha:/tmp/foo% echo 'test file 1' > foo

        alpha:/tmp/foo% darcs record --look-for-adds --all -m"Patch 1"
        Finished recording patch 'Patch 1'

        alpha:/tmp/foo% cd ..

        alpha:/tmp% darcs get foo bar
        Finished getting.

[on host 'beta']

        beta:/tmp% darcs get alpha:/tmp/bar bar
        Finished getting.

        beta:/tmp% cd bar

        beta:/tmp/bar% darcs check
        darcs: failed to read patch:
        Tue Feb 26 16:42:26 EST 2008  testing
          * Patch 1
        user error (Couldn't fetch d5fa8f5bb76f8f22f0145dc22acae853a59ca6e'
        in subdir patches from sources:

        thisrepo:/tmp/bar
        repo:alpha:/tmp/bar
        repo:/tmp/foo
        )

The problem here is that although beta:/tmp/bar inherited
alpha:/tmp/bar's sources, it didn't rewrite the host.  Hence, lacking
a (local) repo at beta:/tmp/foo, it can't get the patches.

The tricky thing here is that everything seems fine, at least
until you try to do a 'check', 'annotate', 'unpull', etc.

Worse yet, the first command you're likely to run is 'check' (assuming
it isn't 'check' that broke), and to the average user, it then looks
like the repository is corrupt in an irreparable way.

The temporary fix:

[on host 'alpha']

        alpha:/tmp/bar% darcs check
        The repository is consistent!

[on host 'beta']

        beta:/tmp/bar% darcs check
        The repository is consistent!

Running 'darcs check' on the intermediary (alpha:/tmp/bar) repo fixes
this, because it loads all the patches where the final (beta:/tmp/bar)
repo can find them.

Otherwise, I've had no troubles with the darcs 2 prereleases so far.
Good to see a great tool get even better.  Darcs has the best UI and
best patch mechanic (unordered "bag of patches") of any SCM out there.
I've even got my somewhat SCM-averse co-worker to use it, and without
any trouble whatsoever. :)

----------
messages: 3679
nosy: beschmi, droundy, kowey, tommy, wisq
status: unread
title: boringfile pref bug

__________________________________
Darcs bug tracker <[EMAIL PROTECTED]>
<http://bugs.darcs.net/issue709>
__________________________________
_______________________________________________
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel

Reply via email to