2013-05-06 2 views

답변

1

나는 SVN의 저장소에 대한 DIFF에 얼마 전에 함수를 썼다 - 기본적 목표는

function diff(){ 
    file=${!#} 
    tmpfile=/tmp/repo/${!#} 
    mkdir -p `dirname $tmpfile` 
    svn cat [email protected] > $tmpfile 
    vimdiff $file $tmpfile 
    rm -rf /tmp/repo/ 
} 

I "다음 파일을 삭제, 파일을 연 다음 정력은 diff를 되찾기 버전을 쓰기"이었다 '이눔하는 데 사용하지만, 여기에 생각이 아니에요 M :

function multiDiff(){ 
    fname=$1 
    shift 
    files="" 
    while (("$#")) 
    do 
     tmpfile="/tmp/repo/$1/$fname" 
     mkdir -p `dirname $tmpfile` 
     git show HEAD~$1:$fname > $tmpfile 
     files="$files $tmpfile" 
     shift 
    done 
    vimdiff $files 
    rm -rf /tmp/repo 
} 

기능은, 임시 디렉토리에 각 파일의 버전을 저장 한 후 모든 파일을 차이점.

function multiDiffSeq(){ 
    multiDiff $1 `seq $2 $3` 
} 

multiDiff index.html 2 3 4multiDiffSeq index.html 2 4를 번역 할 것이다 : 심지어 시퀀스를 할 수있는 편리한 기능을 쓸 수 multidiff index.html 2 3 4 그것은 호출 할 것이다.

이 구성의 가장 큰 단점은 파일의 확장자가 보존된다는 것입니다. 즉, 강조 표시가 보존된다는 의미입니다.

git 처리에 오류가있는 경우 미안합니다. 현재 연습을위한 git repo가 ​​없습니다. 희망 그 도움.

2

${array_variable[index]}으로 bash 배열 요소에 액세스 할 수 있습니다. bash는 배열 인덱스 그래서 0

revs=(2 3); f=index.html; vimdiff <(git show HEAD~${revs[0]}:"$f") <(git show HEAD~${revs[1]}:"$f") 
에서 시작