2011-03-22 3 views
2

나는 django를 사용하여 프로젝트를 개발 중입니다. 나는 그것을 제어하는 ​​버전에 대한 자식 사용하고 있습니다.당신은 어떻게 git로 django에서 분기 된 재사용 가능한 응용 프로그램을 관리합니까

다시 사용할 수있는 장고 앱을 사용하고 싶습니다. 프로젝트에 대한 장고 - 메일러. github repo를 포크하여 프로젝트 폴더에 복제 할 계획입니다. 그러나 그것은 다른 것의 내부에 자식 리포를 가져올 것입니다. 나는 또한 포크가 필요한지 아닌지 잘 모르겠습니다.

비슷한 시나리오를 어떻게 처리합니까? 모범 사례?

답변

5

virtualenv (또는 더 나은 virtualenvwrapper)와 pip plus requiremens.txt를 사용하면 환경을 깨끗하게 유지할 수 있습니다.

requirement.txt git repo를 앱 소스로 사용할 수있게하고, 특정 버전/태그/분기를 지정할 수도 있습니다.

+0

+1 for pip git repo. 나는 내가 할 수있는 것을 알지 못했고 단지 하나의 패키지에 내가 필요로하는 알파를 필요로하는 곳에서 문제가 발생했다. –

+2

나는 당신이 여기서 올바른 생각을 가지고 있다고 생각하지만, 당신이 의미하는 것에 대한 정보가 충분하지 않을 수도 있다고 생각한다. 이 작업을 수행하는 방법에 대한 정보가 많으면 [이 블로그 게시물] (http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/)을보십시오. – meshantz

+0

@mesantz :) virtualenvwrapper는 몇 가지 추가 연마 된 명령을 제공하여 virtualenv와 함께 작업 할 수 있습니다. http://www.doughellmann.com/articles/pythonmagazine/completely-different/2008-05-virtualenvwrapper/index.html – Jerzyk

2

나는 개인적으로 git/mercurial repos를 다운로드 할 수있는 buildout + mr.developer를 사용하여이 애플리케이션들을 eggs 폴더에 추가한다.

포킹은 응용 프로그램을 사용자의 필요에 맞게 업데이트하려는 경우에만 필요합니다. 제대로 작동하면 포킹이 필요하지 않습니다 (복제 만). 해당 응용 프로그램을 다른 사람이 업데이트하지 않게하려면 (간단히 무언가를 충돌시킬 수 있음) 간단한 복사/붙여 넣기/or_clone_without_auto_updates/fork가 작업을 수행합니다.

리포 지 토리 (처음부터?)에서 리포지토리를 처리하려면 빌드 아웃과 같은 것을 사용하는 것이 가장 좋습니다. 어쩌면 패브릭도 작업을 수행 할 수 있습니다.

P. 내가 buildout의 기초에 관한 blog 기사를 게시 할 것이다, 나는 관심이 끌린다면 나는 후자의 링크를 보낼 수 있었다.

+0

하하하, 설립 : –

+0

예! 블로그 게시물이 좋습니다! – Myth

5

Git repo에서 Git repo를 사용하려는 경우 Git submodules을 고려해야합니다. Git 서브 모듈은 별도의 Git repo를 포함하고 코드베이스 내에있는 버전을 관리하는 수단을 제공합니다. 당신의 "부모"프로젝트 내부

  1. git submodule add 명령을 원하는 다른 REPOS를 추가 : 다음과 같이

    기본 워크 플로우입니다. 예를 들어, git submodule add https://github.com/jtauber/django-mailer.git은 프로젝트에 django-mailer 폴더를 넣습니다. 원할 경우 git clone과 같이 대체 이름을 지정할 수 있습니다.

  2. 이렇게하면 해당 repo가 ​​자동으로 복제되고 기본적으로 마스터 분기가 체크 아웃됩니다. 또한이 정보를 Git repo의 색인에 추가하므로 커밋 할 항목이있는 git status을 실행하면 표시됩니다.
  3. "부모"프로젝트 (하위 모듈에는 없음)에서 git commit -m "Your message"을 실행하여 수행 한 작업을 커밋하십시오. 당신은 서브 모듈 (당신의 자식의 repo 내 자식의 repo)를 업데이트해야하는 경우

나중에, 다음, 직접으로 이동 표준 git pull origin master을한다. 업데이트가있는 경우 상위 프로젝트로 돌아가서 git addgit commit 표준을 실행하여 저장소가 새 버전의 하위 모듈에 종속되어 있다는 사실을 확인하십시오.

이제 다른 곳에 프로젝트를 복제하면 기본적으로 하위 모듈은 동시에 코드를 가져 오지 않습니다. 부모 프로젝트는 서브 모듈을 커밋하는 저장소를 실제 코드가 아닌 저장소에 저장합니다.이 경우, 다음과 같은 명령을 사용하여 서브 모듈을 초기화하고 업데이트해야합니다

git submodule init 
git submodule update 

가 이제 서브 모듈뿐만 아니라 자신의 코드가 있어야합니다.

이 모든 내용은 Git community book에 자세히 설명되어 있습니다. git submodule workflow를 보여주는 멋진 video on Blip.tv도 있습니다.

+0

+1 이것은 내가 사용하는 것인데, 나는 그걸로 정말 행복하다. – Spike

관련 문제