2010-03-30 10 views
7

나는 힘, GitHub 및 Heroku의 세계에 처음이다. 지금까지, 나는이 패러다임을 즐기고 있지만 SVN을 배경으로, Git의 세계에서는 다소 복잡해 보인다. 나는 해결책을 찾고있는 문제에 직면하고있다.Git + GitHub + Heroku

시나리오 :

1. 내가 설정 GitHub의에 새로운 개인 프로젝트가 있습니다. 나는 개인 프로젝트를 포크 지금은 내 지점에서 다음과 같은 구조를 가지고 :

/project 
     /apps 
     /my-apps 
      /my-app-1 
      .... 
      /my-app-2 
      .... 
      /your-apps 
      /your-app-1 
       .... 
      /your-app-2 
       .... 
     /plugins 
     .... 

는 내가 원하는 폴더의 내 컴퓨터에서 GitHub의 내 포크의 코드를 커밋 할 수 있습니다. 나중에 이들은 프로젝트 관리자가 마스터 저장소로 가져옵니다.

2. apps 폴더에있는 개별 응용 프로그램마다 Heroku에서 로컬 컴퓨터의 사용자 스토리를 완료했을 때 변경 사항을 적용하는 Git Repo 자체의 응용 프로그램을 설치했습니다. 즉, apps 폴더의 모든 앱은 Heroku에서 호스팅되는 Rails 앱입니다.

문제 :

내가 원하는 것은 그것은 또한 최신 코드 모든 시간을 가지고, 내가 Heroku가에 내 변화를 누를 때, 그들은뿐만 아니라 GitHub의에 내 프로젝트 포크에 전념 할 수 있다는 것입니다, 그래서.

제가보기에 문제는 GitHub에있는 폴더가 Repo의 일부인 동안 Heroku의 코드는 Git Repo입니다.

지금까지 내가 조사한 것은 Git World에 Submodule이라는 구조가있는 것으로 알려져 있지만, 초보자 용 설명서를 찾을 수 없었습니다.

커뮤니티의 누군가가이 문제의 해결책을 식별하는 데 도움이되고 의견을 나눌 수 있습니까?

답변

9

서브 모듈의 아이디어는 마스터 서브젝트에 포함될 수있는 모든 별도의 자식 저장소이며 모든 서브 파일에 대한 링크가 포함 된 대신 모든 서브 파일에 포함될 수 있다는 것입니다.

서브 모듈을 사용하려면 서브 모듈

를 사용하는 방법, 먼저 디렉토리를 추출하고 git init를 사용하여 자신의 자식 저장소로 만들어야합니다. 그런 다음 이것을 Github 또는 [선택한 장소]에 개별적으로 업로드하고 서브 모듈로 사용하려면 git submodule add [place/to/put/it] git://github.com/you/proj1 명령을 사용하십시오.

분리는 내가 더 나은이 자신의 자식 저장소로 밖으로 분리 떠나 각각 하나에게 Heroku에 밀어 생각

가장 좋습니다. 이유? 한 번에 하나씩 작업하고 그 중 하나에 대해서만 git commitgit push heroku master을 수행 할 가능성이 큽니다.

당신이 최상위 디렉토리에이 루비 스크립트를 사용하여 디렉토리 트리 아래로 재귀 할 수있는 동시에 모든 응용 프로그램을 배포 할 수 그러나 바란 경우

Dir["**/*"].select { |dir| File.directory?(dir) }.each do |f| 
    Dir.chdir(dir) do 
    `git push origin master` 
    `git push heroku master` 
    end 
end 

물론 이것은 단지 당신이 경우 일 것을 모든 변경 사항을 준비했습니다.Ruby < = 1.9에 생각을 읽을 수있는 모듈이 없으므로 자동화하는 방법을 생각할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. 언급 한 바와 같이, 서브 모듈을 생성해야하지만, 모든 서브 모듈을 GitHub에서 개별적으로 호스팅해야하는지 아니면 프로젝트 저장소에 상주시킬 수 있는지 알고 싶습니다. –

+1

개별적으로 호스트하는 것이 가장 좋은 방법입니다. –

+1

기본적으로 우리는 이들을 별도로 호스트하고 싶지 않습니다. 주된 이유는 리포지토리가 공개되지 않아서 모든 사람과 공유하고 싶지 않기 때문입니다. 또한 GitHub에 개인 저장소를 호스팅하면 비용이 발생합니다. –

관련 문제