Hello,

some here said that they want a tool to migrate the repository data from svn to
fossil. I wrote some very poor scripts that did the job for me; being as simple
as they are, they are not very generic but they may be easier to adapt than a
300 lines script.

The manual procedure I did:
- Get a checkout of trunk:
  svn co REPO/trunk
- There get a list of the revisions of trunk from oldest to newest:
  svn log ^/trunk | grep '^r[0-9]' | sed 's/r\([0-9]\+\).*/\1/' | tac > 
../revs-trunk
- Look at the date of the older revision, and create a new fossil repository:
  fossil new --date-override DATE_OLDER_THAN_OLDEST_SVN_COMMIT ../repo.fossil
- Try to update to the oldest revision:
  svn update -r OLDEST
- Open fossil
  fossil open ../repo.fossil
- Call the import script I attach:
  sh PATH/import

If any bad happens in the middle, note the revision where it failed, edit the
../revs-trunk so it starts back at that revision on the next 'import' run, and
fix whatever will make the 'import' script keep on working.

This may be of little use, but I better send it to the list instead of keeping
it in hiding.

Regards,
Lluís.
#!/bin/sh

set -e 
set -x 

for a in `cat ../revs-trunk`; do
  MESSAGE="snv r$a

`svn log -r $a | head -n -1 | tail -n +3`"
  svn update -r $a
  SUSER="`svn info | grep "Last Changed Author" | sed 's/.*: \([^ ]\+\).*/\1/' 
`"
  SDATE="`svn info | grep "Last Changed Date" | sed 's/.*: \(.\+\) +.*/\1/' `"
  fossil add *
  fossil changes | grep MISSING | sed "s/MISSING    //" | xargs -d '\n' fossil 
delete
  # It may fail if no changes found, like changing properties
  fossil commit -m "$MESSAGE" --date-override "$SDATE" --user-override "$SUSER" 
|| true
done
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to