Ticket #36 (closed defect: fixed)
svn => darcs breakage when upstream file becomes a directory
| Reported by: | stephen_purcell@… | Owned by: | lele |
|---|---|---|---|
| Priority: | critical | Milestone: | VersionOne |
| Component: | svn | Version: | 0.9 |
| Keywords: | Cc: |
Description
I'm tailorizing the Ruby on Rails SVN repository into darcs format, but I get breakage on upstream changeset 2587 (big repository...):
5:51:16 [I] Applying pending upstream changesets 15:51:16 [I] Changeset "2587" 15:51:16 [I] Log message: r3619@sedna: jeremy | 2005-10-14 14:41:24 -0700 move scripts r3622@sedna: jeremy | 2005-10-14 14:54:48 -0700 remove script/perform and script/process in favor of script/perform/profile, etc. 15:51:16 [I] /export/home/steve/projects/tailored/upstream/rails $ svn update --ignore-externals --revision 2587 . 15:51:18 [I] [Ok] 15:51:18 [I] $ rsync --delete --archive --exclude .svn --exclude _darcs /export/home/steve/projects/tailored/upstream/rails/ /export/home/steve/projects/tailored/rails 15:51:18 [I] [Ok] 15:51:18 [I] /export/home/steve/projects/tailored/rails $ darcs add --case-ok --not-recursive --quiet railties/bin/perform railties/bin/perform/benchmark railties/bin/perform/profile railties/bin/process railties/bin/process/reaper railties/bin/process/spawner railties/bin/process/spinner railties/lib/commands/perform/benchmark.rb railties/lib/commands/perform/profile.rb 15:51:18 [I] [Ok] 15:51:18 [I] /export/home/steve/projects/tailored/rails $ darcs add --case-ok --recursive --quiet railties/bin/perform 15:51:18 [I] [Ok] 15:51:18 [I] /export/home/steve/projects/tailored/rails $ darcs add --case-ok --recursive --quiet railties/bin/process 15:51:18 [I] [Ok] 15:51:18 [I] /export/home/steve/projects/tailored/rails $ darcs record --all --pipe 15:51:19 [W] [Status 1] 15:51:19 [C] Couldn't reply changeset 15:51:19 [C] Upstream change application failed Failure applying upstream changes: /export/home/steve/projects/tailored/rails $ darcs record --all --pipe returned status 1
The underlying darcs error is this:
darcs: takeFile ./railties/bin/perform/benchmark-0 in /export/home/steve/projects/tailored/rails/_darcs/current: inappropriate type (Not a directory)
It turns out that './railties/bin/perform' was changed from a file to a directory in this changeset. "darcs wh -s" in the target repo gives:
M ./railties/Rakefile -2 +2 R ./railties/bin/perform A ./railties/bin/perform/benchmark A ./railties/bin/perform/profile R ./railties/bin/process A ./railties/bin/process/reaper A ./railties/bin/process/spawner A ./railties/bin/process/spinner R ./railties/lib/commands/perform.rb A ./railties/lib/commands/perform/benchmark.rb R ./railties/lib/commands/perform/benchmarker.rb A ./railties/lib/commands/perform/profile.rb R ./railties/lib/commands/perform/profiler.rb R ./railties/lib/commands/process.rb M ./railties/lib/rails_generator/generators/applications/app/app_generator.rb -2 +3
I'm using the latest tailor source from your darcs repository. Thanks for the fantastic work on tailor. Let me know if I can provide any more info on this problem; I'd be happy to help, but don't know enough right now to submit a patch.
Change History
comment:2 Changed 6 years ago by stephen_purcell@…
Hi Lele; the upstream repository is not under my control, but the changeset doesn't seem unreasonable -- looks like an atomic change. Of course, the way SVN represents it may be inelegant.
The tailor.conf I'm using is this (note the "trust-root: True"):
[DEFAULT] verbose = True root-directory = . subdir = . start-revision = INITIAL [rails] target = darcs:rails source = svn:rails state-file = rails.state [darcs:rails] repository = darcsrepo subdir = rails [svn:rails] module = rails/trunk repository = http://dev.rubyonrails.org/svn/rails subdir = upstream/rails trust-root = True
I don't think the 'svn log --xml' output will help you much, but here it is:
<?xml version="1.0" encoding="utf-8"?> <log> <logentry revision="2587"> <author>bitsweat</author> <date>2005-10-14T18:58:07.139387Z</date> <msg> r3619@sedna: jeremy | 2005-10-14 14:41:24 -0700 move scripts r3622@sedna: jeremy | 2005-10-14 14:54:48 -0700 remove script/perform and script/process in favor of script/perform/profile, etc. </msg> </logentry> </log>

Can you point me to the repository, or attach here the svn log --xml --revision 2587 output?
I'd be inclined to split the change in two at the svn level, when this is the case: after all, svn is he only one the has the dubious "replace" event...