2010-02-12 3 views
14

내 응용 프로그램은 Heroku에서 호스팅되며 공용 github 저장소도 있습니다.github를 사용하여 공개 된 git 리포지토리를 호스팅하는 한편 민감한 데이터 파일을 추적 할 수 없도록 보장합니다.

내 응용 프로그램에는 내 amazon S3 자격 증명이 포함 된 구성 파일이 있습니다. 파일이 영웅에게 푸시되고 github에 푸시되지 않도록하는 것이 중요합니다.

그래서 나는 master 브랜치를 heroku로 밀어 넣고 별도의 github 브랜치를 만들고 gitignore 파일이 내 s3.yml 파일을 참조하는지 확인하려고했다. github 브랜치를 github.com으로 푸시 "git push origin github : master"할 수 있습니다.

이것은 첫 번째 커밋에는 잘 작동합니다.

하지만 내 마스터 브랜치로 전환하고 멋진 코드를 작성한 다음 모든 것을 영웅에게 보냅니다. 그런 다음 github 분기로 다시 전환하고 "git merge master"를 수행하여 새 코드가 추가되도록합니다. 그러나 이로 인해 마스터 브랜치의 s3.yml 및 gitignore 파일이 github 브랜치에 복사됩니다. 큐 - 헤드 - 투 - 데스크 뱅잉 세션.

추적 할 수없는 파일이 추적되지 않은 상태로 유지되는 동안 분기를 동기화하는 방법에 대한 조언이 있습니까? git이 원치 않는 S3.yml 파일과 다른 .gitignore 파일을 병합하지 않도록 할 수 있습니까?

내가 죽은 말을 여기에서 채찍질하고 있습니까? 나는 개인 github 계정에 대한 지불을 정당화 할 수 없다. 그러나 대답은 단지 .... 또는 프로젝트 잠금 장치로 바꾸는 것을 포함 할 것이라고 상상한다.

나는이 문제가 내 쓰레기 기술과 방법이 .... 미리 감사드립니다.

편집 ::: 수락 된 대답은 훌륭한 해결책이지만, 나는 방금 내가 좋아하는 새로운 해결책을 찾았습니다. 그것에 대해 읽으십시오 : http://docs.heroku.com/config-vars - Heroku에 그 똑똑한 사람들은 모두를위한 응답이 ... 심각하게 최고

+0

+1 heroku의 솔루션 – Jimmy

+0

Heroku config var 솔루션은 S3 자격 증명과 같은 매개 변수에 관심이있는 경우 작동합니다. 하지만, 예를 들어 개발과 Heroku에 동일한 repo를 사용하려는 상황을 볼 수 있습니다. Heroku에 node_modules 폴더를 보내고 싶습니다 (Heroku가 모든 것을 다시 빌드하는 것보다 권장되기 때문에). Github 또는 Gitlab은 그렇지 않습니다. 또한 구축 전 소스 코드처럼 배포를 위해 Heroku에서 필요하지 않은 여러 폴더가있을 수 있습니다. 이를 위해서는 사용자 지정 병합 드라이버와 여러 분기가 필요합니다. – neverfox

답변

10

그러나이 마스터 지점에서 s3.yml 및 gitignore 파일의 원인은

당신은 커스텀으로 확인되는 드라이버을 병합 으로이를 방지 할 수있는 GitHub의 지점에 복사하세요 github 분기의 .gitignore 파일은 항상 마스터에서 병합 된 내용보다 내용을 유지합니다. 예를 들어 ~/.yourapp 또는 그런 일에 그 (것)들이 -

How do I tell git to always select my local version for conflicted merges on a specific file?

+0

감사! 커스텀 병합 드라이버는 내가 원했던 것입니다! 그나저나 좋은 글. – stephenmurdoch

+1

이것은 여러분이 원하는대로 할 수 없다는 것에 유의하십시오. - 브랜치의 헤드는 올바른 파일을 가지지 만, Git을 사용하여 병합을 수행하면 헤드 커밋은 액세스 가능한 두 개의 부모를 갖게됩니다. 하나는 github 브랜치에서, 다른 하나는 마스터 브랜치에서 여전히 비밀번호를 포함합니다. –

2

SVN에서 이것은 GIT에서 유사한 무언가 일 것이라는 점을 "파일 무시하기"불린다 그래서 나는 모른다 GIT 그래서이 날을 인용하지 않는 사용하지만, 나는 GitHub의 웹 사이트에서이 참조 발견했습니다

http://github.com/guides/ignore-for-git

희망 당신이 당신의 "대안으로 Heroku가라는 이름의 브랜치를 사용하는 경우

+0

나는 그 링크에 대해 지금까지 상세히 설명한 방법을 사용 해왔다. 그러나 어쨌든 고마워. :) – stephenmurdoch

0

을하는 데 도움이 민감한 데이터가없는 "마스터"브랜치와 중요한 데이터가없는 기존의 마스터 브랜치를 너는 언제나 할 수 있었다

git merge master 

그래서 heroku 분지를 주된 분지가 아닌 heroku에 밀 수있다.

+0

감사하지만 여전히 같은 문제가 발생합니다. 새로운 heroku 브랜치에서 개발한다면, 나는 항상 변경 사항을 마스터 (github) 브랜치에 병합해야 할 것이다. 즉, 설정 파일이 복사되고 마스터 브랜치에서 개발된다면 설정이 필요하다. 사용 가능한 파일이 없으면 개발 중에 내 앱이 작동하지 않습니다. 그래도 고마워. – stephenmurdoch

1

당신은 아마 완전히 자식에서 멀리 "위험"파일을 이동할 수 있습니다 참조하십시오.(실제로 질문에 직접 답하는 것이 아니라 많은 소프트웨어가 .fetchmail, .ssh, ...) 다른 사용자가 똑같이 할 수 있도록 허용합니다.

관련 문제