Ubuntu で SVN差分のある変更ファイルをexportする
やりたいことは以下
- SVNコマンドで変更したファイル一覧をExportしたい
- 変更したファイルについては、変更前のソースもExportしたい
- 上記2つよりDiffツールを使ってファイル差分を見たい
- SVNの差分ファイル一覧は
svn diff | awk '/^Index/ {print $NF}'
で取得できる
以下、作成したプログラム
#!/bin/bash
################################################################################
# SETTINGS.
ROOTDIR=/env/android-
OUTDIR=~/デスクトップ
FIXDIR=fix
ORGDIR=original
################################################################################
shellFileName=`basename $0`
fncEchoLog()
{
dateStr=`date '+%Y%m%d:%H:%M:%S'`
outMsg="[$shellFileName] $dateStr $*"
echo "$outMsg"
}
copyParents()
{
targetFile=$1
fncEchoLog "=> $targetFile"
cp -p --parents $targetFile $OUTDIR
}
svnRevert()
{
targetFile=$1
fncEchoLog "=> $targetFile"
svn revert $targetFile
}
compareable()
{
targetFile=$1
fncEchoLog "=> $targetFile"
cp -p --parents $targetFile $OUTDIR/$FIXDIR
svn revert $targetFile
cp -p --parents $targetFile $OUTDIR/$ORGDIR
cp -pf $OUTDIR/$FIXDIR/$targetFile $ROOTDIR/$targetFile
}
copyRevert()
{
targetFile=$1
fncEchoLog "=> $targetFile"
cp -p --parents $targetFile $OUTDIR
svn revert $targetFile
}
################################################################################
fncEchoLog "--------------------------------------------------------------------"
fncEchoLog ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MISSIOIN START"
fncEchoLog "--------------------------------------------------------------------"
fncEchoLog "TARGET DIR [$ROOTDIR]"
fncEchoLog "OUTPUT DIR [$OUTDIR]"
cd $ROOTDIR
fncEchoLog "now checking fixed files..."
FIXED_FILES="`svn diff | awk '/^Index/ {print $NF}'`"
fncEchoLog "your fixed files of $ROOTDIR ..."
echo ""
for fff in $FIXED_FILES
do
echo $fff
done
echo ""
fncEchoLog "choose your mission type. 1:copy(default)/2:svn revert/3:compareable/4:copy and revert"
read prcType
fncEchoLog "2m"
sleep 1
fncEchoLog "1m"
sleep 1
mPrcType=1
if [ "$prcType" = "2" ] ; then
mPrcType=2
elif [ "$prcType" = "3" ] ; then
mPrcType=3
if [ ! -d $OUTDIR/$FIXDIR ] ; then
fncEchoLog "create directory... $OUTDIR/$FIXDIR"
mkdir $OUTDIR/$FIXDIR
fi
if [ ! -d $OUTDIR/$ORGDIR ] ; then
fncEchoLog "create directory... $OUTDIR/$ORGDIR"
mkdir $OUTDIR/$ORGDIR
fi
elif [ "$prcType" = "4" ] ; then
mPrcType=4
fi
for fff in $FIXED_FILES
do
if [ $mPrcType -eq 1 ] ; then
copyParents $fff
elif [ $mPrcType -eq 2 ] ; then
svnRevert $fff
elif [ $mPrcType -eq 3 ] ; then
compareable $fff
elif [ $mPrcType -eq 4 ] ; then
copyRevert $fff
fi
done
fncEchoLog ""
fncEchoLog "--------------------------------------------------------------------"
fncEchoLog "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MISSIOIN COMPLETE"
fncEchoLog "--------------------------------------------------------------------"
read Wait