=========================================
#!/bin/bash
# 이 파일을 수정하면 도스에서 사용하는 svi.sh 파일도 같이 수정해야 한다.
# 사용법에 대한 함수.
function usage()
{
echo "`basename $0` [-h|-r prev[:new]] filename"
echo " -h : help"
echo " -r prev[:new] : diff each revision"
}
# 만약 파라메터가 없으면 종료.
[ $# -eq 0 ] && usage && exit 1
# revision 정보를 얻어온다.
REVISION=""
while getopts :hr: optname ;do
case $optname in
h)
usage; exit 1;;
r)
REVISION="$OPTARG";;
*)
usage; exit 1;;
esac
done
shift $((OPTIND-1))
REVISION=`echo $REVISION | tr ":" " "`
# 읽어온 revision 정보로 부터 prev와 new를 분리해 낸다.
PREV_REV=""
NEW_REV="HEAD"
declare -i i
i=0
for rev in $REVISION;do
case $i in
0)
PREV_REV="$rev";;
1)
NEW_REV="$rev";;
*)
usage; exit 1;;
esac
i=$i+1
done
# 해당 파일이 존재하지 않으면 에러를 출력하고 종료한다.
[ ! -f "$1" ] && echo "[ERROR] "$1" is not exist" && exit 1
# 디렉토리구분자인 "\"를 '/'로 변환하도록 한다.
# 리눅스 쉘에서 tr을 사용할 때는 "\\"로 되지만 shell script안에서 사용할때는
# "\\\\"로 표현해야 한다.
# 그리고 또 중요한 것은 shell로 "\" 문자가 포함된 스트링이 전달되면 특수하게
# 인식될 수 있다. 따라서 따옴표로 묶어서 넘겨주어야 한다.
FILENAME=`echo "$1" | tr '\\\\' '/'`
작업환경이 win32계열이시다면 Tortoisesvn을 설치하시고환경
작업환경이 win32계열이시다면 Tortoisesvn을 설치하시고
환경설정에서 파일비교설정을 vimdiff를 지정하시면 되구요 개인적으로 acroedit에있는 acrodiff를 권장하고싶지만^^;
그리고 쉴환경이시다면 그냥 버젼을 내려받기하고 vimdiff로 비교하는 방법밖에 없는걸로 알고있습니다.
Perl 만세~~~
Tortoisesvn 의 diff 는 만족스러운데 아쉽게도 win32 환
Tortoisesvn 의 diff 는 만족스러운데 아쉽게도 win32 환경이 아니라서
Re: svn(SubVersion) diff 결과물을 vim 의 diff 기능에 연동?
vim.org에서 script를 검색해보세요.
cvs는 cvscommand로 잘 됩니다.
:CVSVimDiff 와 같은 식으로 사용합니다.
subversion용으로도 누가 구현하지 않았을까요?
svn diff | gvim -d -혹시 이걸 바라시는 것은..;
svn diff | gvim -d -
혹시 이걸 바라시는 것은..;
[quote]svn diff | vim -[/quote]위에 방법도
위에 방법도 그냥 svn diff 보다는 훨 좋군요.
근데 제가 원하는 진정한 diff 는 vim -d [file1] [file2] 로 헀을 때
보여지는 Diff Mode 형식으로 볼 수 없을까? 입니다. :)
[code:1]svn diff --diff-cmd vim -x "
svn diff --diff-cmd vim -x "-d" ...
제가 svn을 거의 안 써서 잘은 모르겠는데 이러면 어떨까 싶습니다.
- 토끼군
제가 사용하는 스크립트입니다.스트립트 이름은 그냥 svi 라고 해서
제가 사용하는 스크립트입니다.
스트립트 이름은 그냥 svi 라고 해서 사용하고 있습니다.
=========================================
#!/bin/bash
# 이 파일을 수정하면 도스에서 사용하는 svi.sh 파일도 같이 수정해야 한다.
# 사용법에 대한 함수.
function usage()
{
echo "`basename $0` [-h|-r prev[:new]] filename"
echo " -h : help"
echo " -r prev[:new] : diff each revision"
}
# 만약 파라메터가 없으면 종료.
[ $# -eq 0 ] && usage && exit 1
# revision 정보를 얻어온다.
REVISION=""
while getopts :hr: optname ;do
case $optname in
h)
usage; exit 1;;
r)
REVISION="$OPTARG";;
*)
usage; exit 1;;
esac
done
shift $((OPTIND-1))
REVISION=`echo $REVISION | tr ":" " "`
# 읽어온 revision 정보로 부터 prev와 new를 분리해 낸다.
PREV_REV=""
NEW_REV="HEAD"
declare -i i
i=0
for rev in $REVISION;do
case $i in
0)
PREV_REV="$rev";;
1)
NEW_REV="$rev";;
*)
usage; exit 1;;
esac
i=$i+1
done
# 해당 파일이 존재하지 않으면 에러를 출력하고 종료한다.
[ ! -f "$1" ] && echo "[ERROR] "$1" is not exist" && exit 1
# 디렉토리구분자인 "\"를 '/'로 변환하도록 한다.
# 리눅스 쉘에서 tr을 사용할 때는 "\\"로 되지만 shell script안에서 사용할때는
# "\\\\"로 표현해야 한다.
# 그리고 또 중요한 것은 shell로 "\" 문자가 포함된 스트링이 전달되면 특수하게
# 인식될 수 있다. 따라서 따옴표로 묶어서 넘겨주어야 한다.
FILENAME=`echo "$1" | tr '\\\\' '/'`
DIRNAME=`dirname ${FILENAME}`
BASENAME=`basename ${FILENAME}`
# 적당한 prev_file을 찾아낸다.
if [ "$PREV_REV" = "" ];then
PREV_FILE="${DIRNAME}/.svn/text-base/${BASENAME}.svn-base"
else
svn cat -r $PREV_REV "${FILENAME}" > "${FILENAME}".$PREV_REV 2> /dev/null
RET=$?
if [ $RET -eq 0 ];then
PREV_FILE="${FILENAME}".$PREV_REV
DELETE_PREV_FILE=${PREV_FILE}
else
rm -f "${FILENAME}".$NEW_REV
PREV_FILE=""
fi
fi
# 적당한 new_file을 찾아낸다.
if [ "$NEW_REV" = "HEAD" ];then
NEW_FILE="${FILENAME}"
else
svn cat -r "$NEW_REV" "${FILENAME}" > "${FILENAME}".$NEW_REV 2> /dev/null
RET=$?
if [ $RET -eq 0 ];then
NEW_FILE="${FILENAME}".$NEW_REV
DELETE_NEW_FILE=${NEW_FILE}
else
rm -f "${FILENAME}".$NEW_REV
NEW_FILE=""
fi
fi
# 만약 두개의 파이 모두 존재하지 않는 다면 종료한다.
if [ "$PREV_FILE" = "" -a "$NEW_FILE" = "" ];then
usage; exit 1
fi
if [ "$OS" = "" ];then
PROG=vim
else
PROG=gvim
fi
# 이제 vi를 실행하자.
if [ ! -f ${PREV_FILE} ]; then
if [ ! -f ${NEW_FILE} ];then
usage; exit 1
else
${PROG} ${NEW_FILE}
fi
else
if [ ! -f ${NEW_FILE} ];then
[ -n "${DELETE_PREV_FILE}" ] && rm -f "${DELETE_PREV_FILE}"
echo "${PREV_FILE} is not found"
exit 1
else
${PROG} -d "${PREV_FILE}" "${NEW_FILE}"
fi
fi
# co으로 갱신받은 파일을 지우도록 한다.
[ -n "${DELETE_NEW_FILE}" ] && rm -f "${DELETE_NEW_FILE}"
[ -n "${DELETE_PREV_FILE}" ] && rm -f "${DELETE_PREV_FILE}"
좋은 스크립트군요.잘 사용하겠습니다. :D
좋은 스크립트군요.
잘 사용하겠습니다. :D
Re: svn(SubVersion) diff 결과물을 vim 의 diff 기능에 연동?
http://www.vim.org/scripts/script.php?script_id=922
svncommand.vim 이 있습니다. cvscommand 과 같이
편집중인 파일에서 \sv 를 차례로 누르시면 base revision과 vimdiff로 보여주지요.
---
http://coolengineer.com
svn diff a.c 를 하면 vimdiff로 바로 보이게 하려면.
svn diff a.c
를 하면 vimdiff로 바로 보이게 하려면.
PATH에 ~/bin 을 넣어 두면 됩니다.
---
http://coolengineer.com
댓글 달기