문제

나는 GIT를 처음 접했고 그것이 내 요구 사항에 얼마나 부합할지는 아직 모르지만 인상적으로 보입니다.

다양한 고객을 위해 사용하는 단일 웹앱이 있습니다(django+javascript).

저는 GIT를 사용하여 이러한 다양한 고객 버전을 지점으로 처리할 계획입니다.각 고객은 사용자 정의 파일, 폴더 및 설정, 향상된 버전을 가질 수 있습니다...하지만 동일한 '핵심'을 공유해야 합니다.우리는 소규모 팀이며 github 계정을 구독했습니다.

지점이 이 사건을 처리하는 좋은 방법인가요?

설정 파일에 대해 어떻게 진행하시겠습니까?고객별 설정 파일을 .gitignore하고 settings.xml.sample 파일을 추가하시겠습니까(예: 저장소)?

또한 일부 파일이 master 에 병합되는 것을 방지할 수 있는 방법이 있습니까?(그러나 고객 지점에 커밋됨)예를 들어, 일부 고객 데이터를 고객 지점에 저장하고 싶지만 마스터에 커밋되는 것을 방지합니다.

.gitignore 파일은 지점마다 다르나요?

편집하다모든 답변을 읽은 후(감사합니다!) 먼저 django 프로젝트 구조를 리팩터링하여 핵심 앱과 다른 앱을 앱 하위 폴더에 격리하기로 결정했습니다.이렇게 하면 프로젝트가 더 깔끔해지고 .gitignore 파일을 조정하면 git 브랜치를 사용하여 다양한 고객 및 설정을 쉽게 관리할 수 있습니다!

Ju.

도움이 되었습니까?

해결책

cpharmston의 답변 외에도 각 클라이언트에 대해 실제로 사용자 정의된 것과 그렇지 않은 것을 구분하기 위해 일부 리팩토링을 수행해야 할 것 같습니다.그런 다음 각 클라이언트에 대한 사용자 정의를 추적하기 위해 추가 저장소를 추가하는 것을 고려할 수 있습니다(분기가 아닌 완전히 새로운 저장소).그런 다음 배포는 기본 저장소에서 "핵심"을 가져오고 해당 저장소에서 클라이언트 관련 항목을 가져올 수 있습니다.

다른 팁

나는 당신이하려는 일을 달성하기 위해 지점을 사용하지 않을 것입니다.

소스 제어에서 분기는 다시 트렁크로 병합될 항목에 사용됩니다.예를 들어, 알렉스 게이너 그의 지출 코드의 여름 Django 지점에서 작업 중입니다. 여러 데이터베이스에 대한 지원을 허용합니다., 결국 Django 트렁크에 다시 병합하는 것을 목표로 합니다.

체크아웃(또는 클론, Git의 경우) 수행하려는 작업에 더 적합할 수 있습니다.프로젝트의 모든 기본 파일(및 원하는 경우 .sample 파일)을 포함하는 저장소를 생성하고 코드를 배포하려는 모든 다양한 위치에 저장소를 복제합니다.그런 다음 각 배포에서 구성 및 사용자 지정 파일을 수동으로 생성합니다. 추가하다 저장소에 저장합니다).저장소의 코드를 업데이트할 때마다 다음을 실행하세요. 당기다 각 배포에서 코드를 업데이트합니다.비올라!

Matthew Talbert가 맞습니다. 사용자 정의 항목과 사용자 정의 항목이 아닌 항목을 분리해야 합니다.하나의 디렉터리에 포함되도록 모든 핵심 코드를 리팩터링할 수 있다면 클라이언트는 이를 읽기 전용 git 하위 모듈로 사용할 수 있습니다.추가 이점은 이를 핵심 코드의 명시적 버전에 고정한다는 것입니다.이는 프로덕션 코드에 대해 원하는 최신 개정판으로 의식적으로 업데이트해야 함을 의미합니다.

핵심 코드를 사용자 정의 클라이언트별 코드에서 분리하는 정도까지 유지 관리에 가장 적합한 상태가 될 것이라는 다른 대답은 정확합니다.그러나 나는 군중에서 벗어나 그렇게 할 수 없는 경우(예: 특정 클라이언트의 핵심 코드에 추가 기능을 추가해야 하기 때문에) DVCS 분기가 원하는 작업에 잘 작동할 것이라고 말할 것입니다. .이 목적을 위해서는 repo 내 분기보다는 디렉터리별 분기를 권장할 것입니다(git은 디렉터리별 분기도 수행할 수 있지만 분기되는 복제된 repo에 지나지 않습니다).

나는 git이 아닌 hg를 사용하지만 모든 Django 프로젝트는 유틸리티 스크립트, INSTALLED_APPS의 기본 공통 세트 등이 있는 동일한 기본 "프로젝트 템플릿" 저장소에서 복제됩니다.이는 해당 프로젝트 템플릿을 변경할 때 해당 공통 업데이트를 기존 프로젝트에 쉽게 병합할 수 있음을 의미합니다.이는 계획한 것과 완전히 동일하지는 않지만 유사합니다.특정 클라이언트에 대해 이미 사용자 정의한 코어의 동일한 코드 영역을 수정하는 경우 때때로 병합 충돌을 처리해야 합니다.

모든 답변을 읽은 후(감사합니다!) 먼저 django 프로젝트 구조를 리팩터링하여 핵심 앱과 다른 앱을 앱 하위 폴더에 격리하기로 결정했습니다.이렇게 하면 프로젝트가 더 깔끔해지고, 다른 분기 파일에서 .gitignore를 조정하면 git 분기를 사용하여 다른 고객 및 설정을 쉽게 관리할 수 있습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top