Ticket #71 (closed defect: fixed)
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
Change History
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.
Note: See
TracTickets for help on using
tickets.


Oh, this is another bug of darcs :-|
$ darcs changes --match "hash 20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz" --xml-output --summ <changelog> <patch author='Erik Schnetter <schnetter@aei.mpg.de>' 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.gzSo 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.