謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

GNU Archが(ry 続き

svnよりbzrが実装楽そう。ってことでbzrで実装してみた。svnレポジトリに対して使いたい場合はbzr-svnで。まだ使い込んでないから問題点とか使い勝手とか不明。
'''bzrだけでbzrtools入れてないと悲惨なことになるので注意。'''

bzr-undo

#/bin/sh
if [ ! -f ".undo/rev" ];then
  mkdir -p .undo
  echo 0 > .undo/rev
fi

export REV=`expr \`cat .undo/rev\` + 1`
echo $REV > .undo/rev

bzr diff -rlast:1 > .undo/rev$REV.diff
bzr log -rlast:1 > .undo/rev$REV.log
bzr revert -rlast:1
bzr uncommit --force

bzr-redo

#/bin/sh

export REV=`cat .undo/rev`

bzr ci -m "`cat .undo/rev$REV.log | tail -n 1`" # 手抜き
bzr patch .undo/rev$REV.diff
rm .undo/rev$REV.*
expr $REV - 1 > .undo/rev


ツリーのマージが多分問題。mergeじゃなくてrebase使えってことか?
あと、取得した時/最後にマージした時のrevnoが分からない罠。何か方法はあるはずだが…。