워크 플로 : 잠금없이 Git에서 이진 문서 형식 사용 (subversion에서 이동) 수 있습니다.

우리는 다양한 고객을위한 수많은 프로젝트를 가진 소프트웨어 컨설팅입니다. 우리는 전통적으로 Subversion을 사용하지만 현재 Git으로의 전환을 고려하고 있습니다.

우리가 생산하는 문서의 상당 부분이 고객 (요구 사항, 글로벌 디자인, 테스트 사양 등)과 공유되며 MS Office를 사용하여이를 생성합니다. Subversion에서는 “Lock”기능을 사용하여 같은 문서를 동시에 편집하는 사람이 없도록 할 수있었습니다. Git에서는 분산 특성으로 인해 git에 잠금이 없으므로 그렇게 할 수 없습니다.

잠금은 실제로 통신 메커니즘에 지나지 않지만 매우 효과적입니다.

현재 코드 및 고객 관련 문서는 일반적으로 다른 svn 저장소의 다른 하위 폴더에 있습니다. 자식으로 옮길 때 우리는 무엇을 권장합니까? 옵션 세트가 표시됩니다.

  1. 우리는 svn 저장소를 git 1-on-1로 옮깁니다. 우리는 Office 파일에 잠금을 사용하는 대신 git 사람들이 제안한 것을 수행하고 어떻게 든 워크 플로우를 변경하여 수정하려고합니다. 이것은 모든 문서 편집의 분기에서 작동하고 검토를 통해 병합 할 수 있습니다. 이 접근법은 예를 들어 프로젝트 관리 정보를 포함하는 Excel 시트; 팀원이 쉽게 수정할 수 있지만 공식적인 검토 절차를 거치지 않아야합니다.

  2. 우리는 코드에 git을 사용하고 문서 및 프로젝트 관리에 svn을 사용합니다. 이는 디자인이 더 까다로운 특정 문서가 지정한 코드에 “가까운”것이 아니라 사람들이 업데이트하는 것을 잊어 버릴 가능성이 있다는 단점이 있습니다. 또한 모두가 두 가지 도구 세트를 사용하고 이해해야합니다. 즉, 이것은 고객이 아닌 디자인 문서를 위해 텍스트 기반 문서 도구 (라텍스, 마크 다운, HTML 등)로 이동할 수있는 좋은 기회 일 것입니다.

  3. 1과 비슷하지만 git locksvn lock이 우리를 위해하는 일을 하는 명령을 해킹합니다 (읽기 전용 플래그를 적절하게 토글하고 몇 가지 수단을 통해 서버와 동기화).

DVCS에서는 잠금이 작동하지 않는다는 주장을 사지 않습니다. 시스템이 완전히 오프라인 일 때도 작동해야하기 때문입니다. Svn 잠금도 무시할 수 있습니다. 그것들은 의사 소통 메커니즘입니다. 네트워크 연결이 없으면 컴퓨터가 많이 통신하지 못하게됩니다.

우리는 svn lock워크 플로우에 얼마나 만족하는지 에 대해 만족하는 유일한 가게가 될 수 없습니다 .

아이디어 나 팁이 있습니까?

/programming/119444/locking-binary-files-using-git-version-control-system을 찾았 지만 토론은 다소 기술적입니다. 두 팀원이 동시에 동일한 이진 파일을 편집하는 실질적인 문제를 해결하거나 피하는 방법을 찾고 있습니다.



답변

다음 두 가지 이유로 MS Office 문서에 대해 SVN을 유지하는 것이 좋습니다.

  1. 이미 존재하며 Office 문서를 유지하는 것이 좋습니다 ( 여기 참조 ). 이를 위해 훨씬 더 많은 타사 도구가 있습니다.
  2. 잠금은 Git에서 달성 할 수 있지만 “Git 종류의 작업 방식”이 아닙니다. 이러한 기능이 필요한 경우 최상의 솔루션을 제공하는 도구를 사용하십시오.

내가 좋아하는 말은 “해머를 잡고있을 때 모든 것이 못처럼 보인다”는 것입니다. 코드를 유지하기 위해 Git으로 옮긴다 고해서 문서를 보관하는 데 사용해야한다는 의미는 아닙니다.


답변

코드 버전 제어는 이진 파일이므로 이러한 파일 수준 수정 작업을 수행하므로 Office 파일에 가장 적합한 도구는 아닙니다.

MediaWiki (무료) 또는 Atlassian Confluence (유료)와 같은 공동 작업 도구를 사용하면 Word 문서를 쉽게 추출 할 수 있습니다. 또는 LaTex를 사용하여 Office 파일을 생성하십시오.

확장하겠습니다 …

공동 작업을 수행해야하는 경우 수정 (예 : 단어 변경, 수정 또는 글꼴 변경)을 파일 (예 : 파일)로 강조 표시하는 모델을 채택해야합니다.

SVN과 Git은 코드를 생각하더라도 파일을 텍스트 내용으로 비교하는 저수준 도구입니다. 그러나 문제는 텍스트 파일에서만 작동 할 수 있다는 것입니다. 파일의 특성 / 내용에 신경 쓰지 않아서 고수준 수정 모델을 추출하기 때문입니다.

명확한 예는 이미지 파일 입니다. TortoiseMerge 는 SVN 사용자가 실제 수정 사항과 이미지를 비교하여 SVN 사용자를 돕는 도구 이지만 파일의 VCS내용 패치 에 의해 일반 es가 실행됩니다 . 설명하겠습니다. TortoiseMerge와 같은 도구를 사용하면 이미지 파일의 새 버전이 몇 픽셀 만 변경되거나 두 파일에 대해보다 복잡한 HSV 분석을 구현하는 경우 휘도가 변경 될 수 있습니다. 워터 마크를 추가하거나 색상 수준을 변경할 수 있습니다. 이미지 파일을 비교하는 도구는 우수한 비교 알고리즘을 구현할 경우 차이점 강조 표시합니다. 그러나 클라이언트에서 새 파일을 확인 하려면델타를 생성합니다. 델타는 제거 된 행 세트와 파일에 추가 된 행 세트입니다. 그렇지 않은 경우 바이너리 파일을 더 줄 바꿈이없는 일이 가지고 \r\n단일 문자를 사용하면 전체 라인을 교체를 변경하는 경우, 또는 유사한, 자신의 페이로드에, 그리고 델타에서.

여기 문제가 있습니다. 이진 파일은 모든 버전에 대해 전체 파일을 거의 대체 할 수 있기 때문에 버전 제어에 적합하지 않습니다. MS Office를 사용하여 Office 파일을 작성하고 공동 작업자가 OpenOffice를 사용하여 편집 할 때 고려하십시오. 이들이 약간 다른 OpenXML 파일 압축 알고리즘 버전을 구현하는 경우 문서에서 단일 쉼표를 변경 한 경우에도 완전히 다른 파일로 끝납니다 .

공동 작업 소프트웨어는 문서가 내부적으로 텍스트 기반 형식으로 렌더링됩니다. 텍스트 는 회사에 실제로 의미가 있으며 차이를 계산하거나 충돌을 처리 할 수 있기 때문 입니다. LaTex 또는 원하는 경우 Markdown은 문서 를 고급 마크 업이 있는 텍스트 파일 로 저장하는 방법 이므로 글꼴 / 포맷 제어가없는 클래식 TXT 파일과는 다릅니다.

그러나 분명히 고객은 Markdown 파일을 열고 싶지 않습니까? 좋아, 간단하게 말하면, 소스 문서를 PDF, Word 등 으로 변환 하기 위해 현재 구글에 게으른 소프트웨어를 사용하면된다 .

요약

텍스트 파일을 소스 제어로 체크인하기 시작하면 파일 히스토리를보다 잘 제어 할 수 있으며 특히 VCS 잠금을 사용하지 않고도 충돌을 쉽게 관리 할 수 ​​있습니다.

문서를 공식적으로 공유하기 전에 원본 텍스트 문서를 Office 파일로 내보내는 루틴이 필요합니다

두 단계를 분리하면 학습 곡선 비용으로 사람들이 행복해집니다.


답변

잠금을 추가하지 않고 해당 문서에 git을 사용할 수 있습니다. 마스터가 아닌 경우 마스터 분기로의 푸시를 차단하는 git 워크 플로를 선택하십시오. (여러 가지 워크 플로 중에서 선택할 수 있습니다.) 이렇게하면 사람들이 서로의 수정 내용을 이진 문서 파일로 덮어 쓰지 못하게됩니다. 두 사람이 동일한 이진 문서를 수정한다고 가정합니다. 마스터로 푸시하는 첫 번째 변경 사항이 변경됩니다. 두 번째 마스터는 사본이 마스터 분기 뒤에 있기 때문에 차단됩니다. 먼저 동기화해야합니다. 두 번째 사람은 동기화합니다. 이진 문서에 대한 병합 충돌이 표시됩니다. 해당 사용자는 자신의 버전을 어딘가에 저장하고 마스터 (첫 번째 사람이 푸시 한)에서 버전을 가져 와서 충돌을 해결합니다. 이 시점에서 두 번째 사람의 파일은 마스터 지점에서 최신 상태입니다. 변경 사항을 최신 이진 문서 (수동)로 병합하면 첫 번째 사람과 두 번째 사람의 변경 사항이 모두 포함됩니다. 그런 다음 새 버전이 마스터로 푸시되고 새 마스터 브랜치가됩니다. 병합은 고통이지만 충돌이있을 때만 발생합니다. 또한 변경 내용이 손실되거나 덮어 쓰여지지 않습니다. 충돌이 감지되고 사용자가이를 명확하게 해결할 수 있습니다.


답변

처음 2 개의 솔루션을 함께 사용하면 3 분의 1이 필요하지 않습니다.

스프레드 시트를 디스크에 CSV로 저장하면 Excel은 여전히 ​​스프레드 시트를 편집 한 다음 git에서 병합합니다.

마찬가지로 파일이 HTML이거나 RTF 인 경우 Word에서 파일을 열고 편집하고 저장할 수 있습니다. 물론 Word는 유용한 텍스트보다 더 부풀어 오를 것이지만 여전히 git이 당신을 위해 기꺼이 병합하는 텍스트입니다.

물론 이러한 솔루션은 Excel 측면에서만 문제가 될 수있는 MS 관련 기능을 사용하지 않거나 벗어날 수 있다고 가정합니다.

물론 문서를 읽을 수 있으려면 시스템에 Word를 설치해야합니다.


답변