강좌 & 팁
요즘 대부분의 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 에서는 라인 단위로 읽어 들이기 때문에
그 라인들이 오타가 아니라 저렇게 해주어야 합니다.