git은 우리가 상점에서 구축하는 대부분의 웹 응용 프로그램에 사용되며 응용 프로그램 자체는 다양한 기술 (PHP, Rails 등)을 사용하지만 일반적으로 스테이징 및 프로덕션 각 사이트의 서버. 일반적으로 이러한 서버는 데이터베이스 자격 증명 집합과 환경 기반 구성 설정 (예 : 캐싱)이 다릅니다. 우리의 워크 플로우는 일반적으로 프로덕션 서버를 반영하는 마스터와 스테이징을 반영하는 스테이징과 같이 프로젝트 당 두 개의 자식 브랜치를 유지 관리해야합니다. 새로운 기능은 스테이징 (또는 하위 브랜치)에서 개발되고 완료 및 배포시 마스터로 병합됩니다.Git : 응용 프로그램 구성 및 다른 환경
내 질문은 지점 및 환경 별 구성 파일을 유지 관리하는 가장 좋은 방법과 관련이 있습니다. 비슷한 질문 인 here과 here의 답변을 보았지만 실제로는 만족스럽지 않습니다. 주된 두 가지 접근 방식은 a) git의 범위 밖에서 설정 파일을 남기기 위해 .gitignore 제외를 사용하는 것, 또는 b) 환경을 인식하고 반영하는 코드를 작성하는 것입니다. 호스트 이름에 따라 사용할 데이터베이스 자격 증명 내 문제는) 현재 설정되어있는 설정 파일 중 하나만이 현재 브랜치와 관계없이 코드베이스에 존재할 수 있도록 허용하므로 다른 환경의 설정 파일이 손실된다. b)는 애플리케이션의 기능성과 관련이없는 방식으로 코드베이스를 불필요하게 수정해야하는 것처럼 보인다.
이상적으로, 특정 분기 내에서 구성 파일을 "잠그는"방법을 원합니다. 따라서 체크 아웃 마스터가 될 때마다 마스터 구성 파일을 가져오고 체크 아웃 준비가 될 때마다 준비 구성 파일을 가져옵니다. 또한 마스터에 스테이징 병합이 어떤 식 으로든 마스터 구성 파일에 영향을 미치지 않아야합니다. 지금까지 우리는 git 루트 외부에 환경 특정 설정 파일을 포함하고있는 폴더를 가지고 배포 할 때 수동으로 적절한 파일을 코드베이스로 옮겨 놓았지만, 물론 불필요하게 해킹 당했을 가능성이 있습니다.
git를 사용하여 이것을 수행 할 수있는 방법이 있습니까?
감사합니다.
http : // stackoverflow와 결합 된 http://stackoverflow.com/questions/2154948/how-can-i-track-system-specific-config-files-in-a-repo-project/2155355#2155355 .com/questions/3207575/open-source-my-rails-apps-without-giving-away-the-apps-secret-keys-and-3207608 여기에서 도움을 받으시겠습니까? – VonC