나는이 접근법을 확실히 권장하지 않을 것입니다.
병합 할 수없는 분기에 동일한 코드를 유지하면 문제가 발생합니다. 플랫폼 분기 중 하나에 변경 사항을 적용하는 것을 잊지 말아야 할 지점과 악몽에 적용된 변경 사항을 추적하는 것은 매우 혼란 스러울 것입니다.
언어는 언급하지 않았지만 언어에서 사용할 수있는 기능을 사용하여 플랫폼간에 코드 차이를 구분하지만 하나의 분기를 사용합니다. 예를 들어, C++에서는 먼저 파일 기반 분리를 사용해야합니다. 예를 들어 Mac, Linux 및 Windows 플랫폼 용 사운드 코드가있는 경우 sound_mac.cpp, sound_windows.cpp 및 sound_linux.cpp 파일을 만듭니다. 각 파일에는 동일한 클래스와 메서드가 포함되어 있지만 플랫폼에 특정한 구현은 매우 다릅니다. 당연히 특정 플랫폼의 IDE에만 해당 파일을 추가해야합니다. 따라서 Xcode 프로젝트는 sound_mac.cpp 파일을 가져오고 Visual Studio 프로젝트는 sound_windows.cpp 파일을 사용합니다. 이러한 클래스와 메서드를 참조하는 파일은 #ifdef를 사용하여 포함 할 헤더를 결정합니다.
설치 프로그램 스크립트와 비슷한 방법을 사용합니다. Windows에서보다 Mac에서 다른 설치 프로그램을 사용할 수도 있지만 두 파일 모두 지점에 있습니다. Mac의 빌드 스크립트는 Mac 관련 설치 프로그램 파일을 활용하고 Windows 관련 파일은 무시합니다.
하나의 브랜치에 물건을두고 현재 플랫폼에 적용되지 않는 것을 무시하면 토픽 브랜치와 마스터를 앞뒤로 병합 할 수있어서 인생을 훨씬 더 정숙하게 만듭니다.
플랫폼 분기를 병합하지 않으면 어떻게됩니까? 플랫폼 간의 차이에 영향을주는 변경 사항을 처리해야 할 것입니다. 제안한 작업을 수행하면 플랫폼을 처리해야하는 부분 만 변경됩니다. – markw
모든 플랫폼에 영향을 미치는 하나의 플랫폼 브랜치를 변경 한 경우 해당 변경 사항을 모든 플랫폼 브랜치에 병합해야합니다. 원하는 것을 할 수는 있지만 공통 코드에 대해 하나의 브랜치가 있어야하며 플랫폼 별 브랜치는 플랫폼 별 추가 만 포함해야합니다. 공통 코드에서 플랫폼 별 분기로만 병합 할 수 있으며 다른 방향으로는 사용할 수 없습니다. 그것은 할 수 있지만 지점 간 자유롭게 병합 할 수있는 코드베이스를 유지하는 것이 더 나은 계획이라고 생각합니다. – wadesworld
이 대답을 수락하거나이 대답을 사용해도 문제가 해결되지 않으면 다른 대답을 만드는 것을 고려하십시오. 답변을 수락하지 않으면 사람들이 도움을 주려하지 않을 것입니다. – wadesworld