요즘 대부분의 open source 는 git 로 관리 됩니다.


하지만 사내 형상관리 시스템은 svn 을 사용하는 곳이 많죠?(네... ㅠㅠ)


그래서 다운 받은 소스를 컴파일 하면 컴파일시 생긴 오브젝트 등을 깨끗하게


.gitignore 파일에 나열해서 소스 추적을 쉽게 해줍니다.


하지만 svn 으로 소스를 올린 상태에서 소스 빌드를 하면 ignore 설정이 없어서


수많은 ????  파일들을 만들어 내서 내가 무엇을 변경했는지 확인할수 없게 


해주는 아주 귀찮은 존재들입니다.


그래서... 찾아봤습니다.


누군가 비슷한걸 했더군요...


제가 쓰기 위해서 수정했습니다.


svn status 를 하면 나오는 출력은 파일로 저장합니다.


svn-ignore.sh   ignorefile.txt  와 같이 사용하면 파일을 읽어서


? 라고 표시된 디렉토리를 찾아가서 ignore list 에 추가시켜 주는 스크립트입니다.


전체 내용은 아래와 같습니다.


  1 #!/bin/sh

  2 

  3 # svn-ignore

  4 

  5 # usage:

  6 #   svn-ignore file/to/ignore ...

  7 

  8 if [ "$1" = "" ]; then

  9     echo "usage:"

 10     echo "       svn-ignore file/to/ignore ..."

 11     exit

 12 fi

 13 

 14 

 15 cat $1

 16 

 17 exec < $1

 18 

 19 while read line

 20 do

 21     echo "================================="

 22     c=`echo "$line" | awk '{print $1}'`

 23 

 24     if [ $c != "" ]; then

 25         if [ $c = "?" ]; then

 26             s=`echo "$line" | awk '{print $2}'`

 27             echo "ignore file is :" $s

 28             dir=`dirname "$s"`

 29             base=`basename "$s"`

 30 

 31             echo "basename       :" $base

 32             ignore=`svn propget svn:ignore $dir`

 33             echo "current ignore :" $ignore

 34             if [ -n "$ignore" ]; then

 35              ignore="$ignore

 36 "

 37             fi

 38             ignore="$ignore$base"

 39             echo "modify ignore  :" $ignore

 40             svn propset svn:ignore "$ignore" "$dir"

 41             ignore=`svn propget svn:ignore $dir`

 42             echo "check ignore   :" $ignore

 43 

 44         else

 45             echo "pass line : \""$line"\""

 46         fi

 47     fi

 48 done

 49 

 50 


뭐 그리 복잡하진 않습니다만...

가져가셔서 사용하실때 35,36,37 라인을 주의 하십시요.

svn ignore 에서는 라인 단위로 읽어 들이기 때문에

그 라인들이 오타가 아니라 저렇게 해주어야 합니다.