2012-02-03 4 views
3

나는 자식 프로젝트 (장고 응용 프로그램)를 가지고 있고 다른 응용 프로그램 (https://github.com/lambdafu/django-south)을 하위 트리로 추가하려고합니다. 문제는 타사 저장소가 루트에 추가 디렉토리 계층을 가지고 있다는 것입니다. 나는 파이썬의로드 경로를 망쳐 놓거나, 심볼릭 링크를 추가하거나, import 문에 여분의 접두사를 추가하고 싶지 않다. 내 프로젝트에서 하위 트리로 south 하위 디렉토리를 가져 오는 방법이 있습니까?다른 프로젝트의 하위 디렉토리를 서브 트리로 추가

+0

OHHHHHH - 오늘 나는 [git-subtree] (https://github.com/apenwarr/git-subtree)에 대해 배웠다. – dokkaebi

+0

프로젝트 종속성으로 South를 포함하려고합니까? –

+0

그 repo는 setup.py를 가지고 있습니다. 실제로 소스를 필요로하지 않는 한, 새로운 HEAD를 원할 때마다 repo를 설치하고 업데이트해야합니다. –

답변

1

남쪽 프로젝트의 루트 디렉토리를 repo이라고 부릅시다.

__init__.py을 추가하여 repo에 파이썬 모듈을 만든 다음 설치된 응용 프로그램에 repo.south을 추가 할 수 있습니다. (here에서 차용)

또한 그래서 당신은 프로젝트의 특정 버전과 함께 남쪽의 특정 버전을 유지할 수 git submodulerepo를 추가 할 수 있습니다.

+0

오른쪽, 이것은 "가져 오기 문에 여분의 접두사 추가"옵션입니다. 원하지 않습니다. 또한 서브 디렉토리에'__init __. py' 파일을 유지하는 것을 의미합니다. 서브 트리를 사용하면 아마도 병합 충돌을 일으키지 않는 하위 트리 라우트로 간다.하지만 하위 모듈을 사용하는 경우이를 유지하는 편리한 방법을 모른다. – Clueless

+0

아 맞아요. 따라서 유일한 해결책은 디렉토리 구조를 전혀 변경하지 않는 것입니다. 내가 아는 한, 전체 자식 repo보다 적은 복제 방법은 없습니다. 내 생각에 심 링크는 끝나기 쉽습니다. 행운을 빕니다! – dokkaebi

1

종속성으로 South를 포함하려고합니까? 그게 그 소리 같기 때문이야. 그렇다면 프로젝트 트리에 디렉토리를 포함하는 것보다 더 좋은 방법이 있습니다. 그건 지저분하고 우리는 그것을위한 도구가 있습니다.

pip을 사용합니까? 약 virtualenv은 어떻습니까? 그렇다면, pip install -e git+https://github.com/lambdafu/django-south#egg=south 그리고 당신은 잘 갈 것입니다. 설치 후 최신 HEAD로 업데이트하려면 -U 플래그를 추가하기 만하면됩니다. req 파일 (pip freeze > requirements.txt, pip install -r requirements.txt)에 요구 사항을 유지하여 버전 제어를 유지할 수도 있습니다.

그렇지 않으면 왜 안 되니?

+0

필자는 보통 pip를 사용하지만,이 경우에는 나가는 연결을 허용하지 않거나 시스템 전체의 파이썬 패키지를 추가하는 편집적인 sysadmin으로 서버에 배포하고 있습니다. 아이디어는 소스 트리에 모든 의존성을 가짐으로써 ssh에 대한 git push가 모두 필요한 것입니다. nodejs가 모듈을 수행하는 방식의 정렬. 어쩌면 나는 pip를 설치하고 번들 기능을 사용하도록 요청함으로써 해결할 수 있습니다. – Clueless

+0

기존 virtualenv (tar + zip)에서 환경을 복사 한 다음 서버에서 확장 할 수 있습니다. 외부 연결이 필요하지 않습니다. –

+0

정확히. 이는 시스템 전체 패키지 설치가 필요 없음을 의미합니다. 사용자가 Python 응용 프로그램을 실행하는 모든 사용자 공간에 virtualenv가 설치되어 있어야합니다. –

관련 문제