darcs2git.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/sh
  2. [ -d _darcs -a -d .git ] || exit 1
  3. PREFIX=/usr/local
  4. DARCS=$PREFIX/bin/darcs
  5. XSLTPROC=$PREFIX/bin/xsltproc
  6. TMPDIR=/tmp/darcs2git
  7. [ -d $TMPDIR -a -w $TMPDIR ] || mkdir -p $TMPDIR
  8. DARCS2GIT_XSLT=`dirname $0`/darcs2git.xslt
  9. [ -r $DARCS2GIT_XSLT ] || exit 1
  10. $DARCS fetch --all --summary --quiet > /dev/null &&
  11. $DARCS pull --all --quiet --dry-run --xml-output > $TMPDIR/patches.xml
  12. [ -s $TMPDIR/patches.xml ] || exit 2
  13. if head -n 1 $TMPDIR/patches.xml | grep "No remote changes to pull in!"
  14. then
  15. echo "No remote changes to pull in!" >&2
  16. exit 2
  17. fi
  18. $XSLTPROC --nonet --novalid --stringparam TMPDIR "$TMPDIR/" $DARCS2GIT_XSLT $TMPDIR/patches.xml > $TMPDIR/doit.sh && \
  19. sh -x $TMPDIR/doit.sh
  20. exit $?
  21. # Für jeden patch (identifiziert durch seinen hash):
  22. # 1. darcs fetch
  23. # 2. darcs pull --dry-run --xml-output > patches.xml
  24. # 3. xsltproc --nonet --novalid darcs2git.xslt patches.xml > doit.sh
  25. #
  26. # 2. darcs pull - -matches="hash $HASH" --post-hook="$DARCS_FILES und $DARCS_PATCHES_XML wegschreiben"
  27. # 3. git add $DARCS_FILES
  28. # 4. git commit -F "$name\n\n$comment" --author=$author --date=$date $DARCS_FILES
  29. ##### Praeliminiarien: s. darcs2git.init.sh #####
  30. #
  31. ### wikidata ###
  32. # mkdir wikidata
  33. # cd wikidata
  34. ### darcs ###
  35. # darcs initialize
  36. # echo "https://mesh-j-1.free.de/~ffdo/wiki/wikidata" > _darcs/prefs/defaultrepo
  37. # patch _darcs/prefs/boring
  38. 9a10,12
  39. > # wg. git
  40. > \.git$
  41. >
  42. ^D
  43. Hmm... Looks like a normal diff to me...
  44. Patching file _darcs/prefs/boring using Plan A...
  45. Hunk #1 succeeded at 10.
  46. done
  47. ### git ###
  48. # git config --global user.name "FF-DO-Wiki `hostname`"
  49. # git config --global user.email "$USER@`hostname`"
  50. # git init
  51. # echo "_darcs" > .gitignore
  52. # git add .gitignore
  53. # git commit -m "ignore _darcs" .gitignore