Ticket #71 (closed defect: fixed)

Opened 7 years ago

Last modified 5 years ago

Tailor fails on darcs->svn conversion: non-existing file cannot be removed

Reported by: eschnett Owned by: lele
Priority: major Milestone: VersionOne
Component: tailor Version: 0.9
Keywords: Cc:

Description

I am trying to convert a rather large darcs repository ( http://www.carpetcode.org/~darcs/carpet-stable-3) to svn. Tailor fails at some point with the following error message:

17:36:32 [I] Changeset "CarpetWeb: Update web pages"
17:36:32 [I] Log message: Update the web pages.
Explain stable and development versions better.
Update darcs binaries and documentation.
17:36:32 [I] /Users/eschnett/DC/carpet $ darcs pull --all --quiet --match "hash 20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz"
17:36:46 [I] [Ok]
17:36:46 [I] /Users/eschnett/DC/carpet $ darcs changes --match "hash 20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz" --xml-output --summ
17:36:46 [I] [Ok]
17:36:46 [I] /Users/eschnett/DC/carpet $ svn remove --quiet --force Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz
17:36:46 [I] [Ok]
17:36:46 [I] /Users/eschnett/DC/carpet $ svn add --quiet --no-auto-props --non-recursive Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz
17:36:46 [I] [Ok]
17:36:46 [I] /Users/eschnett/DC/carpet $ svn commit --file /tmp/tailorqKMpa3svn Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz Carpet/CarpetWeb/get-carpet-darcs.html Carpet/CarpetWeb/index.html Carpet/CarpetWeb/olds.html Carpet/CarpetWeb/work-with-darcs.html
17:36:46 [W] [Status 1]
17:36:46 [C] Couldn't replay changeset
17:36:46 [I] 409 pending changesets in state file
17:36:46 [C] Upstream change application failed
Failure applying upstream changes: /Users/eschnett/DC/carpet $ svn commit --file /tmp/tailorqKMpa3svn Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz Carpet/CarpetWeb/get-carpet-darcs.html Carpet/CarpetWeb/index.html Carpet/CarpetWeb/olds.html Carpet/CarpetWeb/work-with-darcs.html returned status 1 saying
svn: Commit failed (details follow):
svn: '/Users/eschnett/DC/carpet/Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz' is not under version control

And tailor is right: This file is indeed not under version control at this point. It appears that darcs allows removing this non-existing file, which svn does not allow.

$ darcs --version
1.0.8 (release)
eschnett@Redshift:~/DC/carpet (18:24:43)
$ LANG=en_US $HOME/src/tailor/tailor --version
0.9.23

I just updated tailor. My latest tailor patch is:

Tue Aug 15 20:01:01 EDT 2006  lele@nautilus.homeip.net
  * Insert add_dir entries at the right place
  This is an adaption of a patch by Jeff Licquia <jeff@licquia.org>:
  instead of appending the ADD entries for the parent directories, place
  them at the right place, ie before the entry that triggers the
  creation.

Attachments

issue185.dpatch Download (3.6 KB) - added by lele 7 years ago.
Proposed fix for issue185 in darcs

Change History

comment:1 Changed 7 years ago by lele

Oh, this is another bug of darcs :-|

$ darcs changes --match "hash 20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz" --xml-output --summ
<changelog>
<patch author='Erik Schnetter &lt;schnetter@aei.mpg.de&gt;' date='20050606193150' local_date='Mon Jun  6 21:31:50 CEST 2005' inverted='False' hash='20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz'>
        <name>CarpetWeb: Update web pages</name>
        <comment>
Update the web pages.
Explain stable and development versions better.
Update darcs binaries and documentation.</comment>
    <summary>
    <remove_file>
    Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
    </remove_file>
    <remove_file>
    Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz
    </remove_file>
    <add_file>
    Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz
    </add_file>
    <modify_file>
    Carpet/CarpetWeb/get-carpet-darcs.html<removed_lines num='68'/><added_lines num='128'/>
    </modify_file>
    <modify_file>
    Carpet/CarpetWeb/index.html<removed_lines num='56'/><added_lines num='17'/>
    </modify_file>
    <modify_file>
    Carpet/CarpetWeb/olds.html<removed_lines num='1'/><added_lines num='22'/>
    </modify_file>
    <modify_file>
    Carpet/CarpetWeb/work-with-darcs.html<removed_lines num='4'/><added_lines num='4'/>
    </modify_file>
    </summary>
</patch>
</changelog>

Here effectively we can see that Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz is being removed, but inspecting the patch more closely one can see

$ zcat _darcs/patches/20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz | head -14
[CarpetWeb: Update web pages
Erik Schnetter <schnetter@aei.mpg.de>**20050606193150

 Update the web pages.
 Explain stable and development versions better.
 Update darcs binaries and documentation.
] {
addfile ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
binary ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
oldhex
*
newhex
*
rmfile ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz

So a single patch adds an empty file and removes it immediately. The problem is not that, but rather the incomplete output of darcs changes!

Now one may wonder if it's easier writing a parser of darcs patches, or rather learning Haskell and fixing darcs...

I think this is  http://bugs.darcs.net/issue185: more over, --xml-output ignores -v.

Changed 7 years ago by lele

Proposed fix for issue185 in darcs

comment:2 Changed 7 years ago by lele

  • Status changed from new to assigned

This should be fixed by [1259], provided the patch to darcs attached here is either applied or accepted by darcs developers. I'll leave this ticket open until that happens.

comment:3 Changed 7 years ago by lele

FYI, the patch has been accepted in the unstable repository of Darcs, and so it will likely appear in a future 1.0.9 release.

comment:4 Changed 5 years ago by lele

  • Status changed from assigned to closed
  • Resolution set to fixed

Surely anybody's using Darcs 2.0 nowadays :-)

Note: See TracTickets for help on using tickets.