삽질...bzr+http 경험.....
Bazaar 버전 관리 툴을 사용해 보고 너무 맘에 들어서 데비안 lenny에서 본격적으로 사용하기로 결심하였습니다.
그래서 매뉴얼을 읽고 저장소를 구성하고 내부적으로만 사용할 것이기 때문에
그냥 http(write도 가능하게)에 연동하기 위해 FastCGI로 연동을 했는데
매뉴얼에 나온 예제대로 아무 생각없이 bzr-smart.fcgi 파일 만들고 복사해서 붙여넣고
(이것이 삽질의 결정타(?)였습니다...윽.....--;)
FastCGI 설정해주고 테스트 하니
bzr info bzr+http://localhost/bzr/test1
bzr: ERROR: Generic bzr smart protocol error: Invalid http response for http://localhost/bzr/test1/.bzr/smart: Unable to handle http code 500: Internal Server Error
매뉴얼에 나온 fcgi.py 모듈이 문제인가 해서 데비안 시냅틱에서 flup 패키지 설치하고
bzr-smart.fcgi코드를 약간 수정해 주고 또 테스트를 했지만 실패하였습니다.
그러다 이렇게 테스트 해보니
python bzr-smart.fcgi
TypeError: make_app() got an unexpected keyword argument 'load_plugins' TypeError: make_app() got an unexpected keyword argument 'enable_logging'
이런 에러가 나와서 위 매개변수들을 제거하고
(이건 아마도 데비안 저장소 bzrlib가 최신 버전이 되면 다시 필요할 듯...)
다시 테스트를 했는데 위 "Generic bzr smart protocol error" 에러가 또 나왔습니다.
그래서 파이썬 fcgi 모듈이 이상한가 하고
소스코드 여기 저기 휘저으며 테스트 했지만 또 실패했습니다.
그러다 bzr-smart.fcgi도 이리 저리 수정하며 테스트를 했는데
어라? 다른 에러가 나오는 것이였습니다.
bzr: ERROR: Not a branch: "http://localhost/bzr/test1/".
(이건 .bzr 디렉토리가 없는 곳을 branch 할 때 나오는 것 같던데...)
그래서 저장소 구성을 잘못했나 하고 저장소 구성을 다시 하고
테스트 했지만 또다시 "ERROR: Not a branch"
그래서 그냥 http://로 테스트를 했는데 어라...이것도 에러가 나왔습니다.
(처음에는 에러 안 났는데... OTL)
구글링 결과 아래처럼 하면 되었습니다.
bzr info nosmart+http://localhost/bzr/test1
bzr+http://를 한 번 사용하면 http://도 bzr+http://로 해석되게 시도하는 것 같았습니다.
그리고 다시 한참 bzr+http://로 테스트하며 해매다가 "ERROR: Not a branch" 문제를 알아냈는데
bzr-smart.fcgi 테스트하다가 "/" 빼먹은 문제였습니다... OTL
암튼 한참 더 해매다가 어부지로 테스트... 성공
그런데 어디서 틀린 건지는 몰랐습니다.
그래서 추적해 본 결과 위해 결정타라고 말씀드린
매뉴얼에 나온 예제대로 아무 생각없이 bzr-smart.fcgi 파일로 만든 것이 문제였습니다.
파일 맨 위에 아래 코드가 빠져있었던 것이 였습니다.
#!/usr/bin/env python
(이것도 우연히 구글링해서 이사람 저사람 코드를 복사해 붙여넣다가 우연히 들어간 것이었습니다. ^^;)
암튼 이 간단한 한 줄 코드 때문에 엄청난 삽질을 해서 배운 것은 많았지만 열은 좀 받았습니다. --;
그리고 나서 본격적으로 테스트를 했는데
bzr info bzr+http://localhost/bzr/test1 되는데
bzr info bzr+http://localhost/bzr/test1/trunk 는
bzr: ERROR: No repository present: "bzr+http://localhost/bzr/test1/trunk/"
또 이런 에러가 나왔습니다... OTL
그래서 구글링를 해보니 bzr 최신 버전으로 하라고 해서 처음에는 우분투 저장소 것을 시도하다 의존성 문제 때문에
Apt Pinning으로 Testing(squeeze) 저장소 것을 가져다 쓰기로 했습니다.
참고:
http://aproxacs.springnote.com/pages/482071
http://wiki.debian.org/AptPinning
bzr을 업그레이드 하니 bzr info bzr+http://localhost/bzr/test1/trunk 는 성공!
이제 진짜루 본격적으로 commit,push 테스트를 했는데 또 에러... OTL
~/.bzr.log를 보니 pycurl 패키지 어쩌고 에러가 나와서 python-pycurl 패키지를 설치해주고 진짜루 성공했습니다.
제가 어설프게 알고 있는 bzr+apache+python이 짬봉이 되서...정말 참 가관이였습니다.....
그리고 매뉴얼에 나온 mod_python으로도 해볼려고 했으나
매뉴얼의 modpywsgi 모듈 링크가 깨져있어서
또다시 어마어마한 삽질을 할까 봐서 그리고 이 상태로 만족하기에 일찌감치 포기했습니다...^^;
--
첨부파일 bzr&http.tar.gz 설명:
bzr-smart.fcgi
- 상황에 맞게 디렉토리 부분 변경해야 합니다.
bzr
- bazaar fastcgi를 위한 apache 설정파일이고 상황에 맞게 적절히 변경해야 합니다.
(저는 /etc/apache2/conf.d 에 넣었습니다.)
--
마지막으로 눈물의 스샷 한방!
제목 : 이 간단한 것을 하기위해 나는 그렇게 엉뚱한 곳을 삽으로 파고 있었나 보다.
bzr&http.png
--
쓰다 보니 두서도 없고 스크롤 압박이...
필요하신 부분만 보세요....^^;
느낀점:
svn branch 스타일(?)도 안 되는 듯 보이고 revision 번호도 이상하게(?) 올라가고
사용법이 직관적이는 하나 아직 뭔가 이해를 잘못하고 있나 봅니다.
그래서 갑자기 드는 생각으로 난 왜 bzr를 사용할려고 했지?...삽질.....OTL
첨부 | 파일 크기 |
---|---|
bzr&http.tar.gz | 513바이트 |
bzr&http.png | 41.88 KB |