저는 여러 Excel 파일과 SQL 스키마 파일을 담당하고 있습니다. 이러한 파일에 대해 더 나은 문서 버전 제어를 수행하려면 어떻게해야합니까?
이 파일에서 수정 된 부분 (다른 부분)을 알고 모든 버전을 참조 용으로 보관해야합니다. 현재 파일 이름에 타임 스탬프를 추가하고 있지만 비효율적 인 것 같습니다.
더 나은 문서 버전 관리를 수행 할 수있는 방법이나 좋은 방법이 있습니까?
그건 그렇고, 편집자는 이메일을 통해 파일을 보냅니다.
저는 여러 Excel 파일과 SQL 스키마 파일을 담당하고 있습니다. 이러한 파일에 대해 더 나은 문서 버전 제어를 수행하려면 어떻게해야합니까?
이 파일에서 수정 된 부분 (다른 부분)을 알고 모든 버전을 참조 용으로 보관해야합니다. 현재 파일 이름에 타임 스탬프를 추가하고 있지만 비효율적 인 것 같습니다.
더 나은 문서 버전 관리를 수행 할 수있는 방법이나 좋은 방법이 있습니까?
그건 그렇고, 편집자는 이메일을 통해 파일을 보냅니다.
답변:
질문에 태그를 추가 했으므로 자식 나는 당신이 이것을 위해 Git 사용법에 대해 묻는다고 가정합니다.
음, SQL 덤프는 일반 텍스트 파일이므로 Git으로 추적하는 것이 좋습니다. 리포지토리를 만들고 저장하기 만하면됩니다. 파일의 새 버전을 받으면 파일을 덮어 쓰고 커밋하면 Git이 모든 것을 알아 내고 수정 날짜를 확인하고이 파일의 특정 버전을 체크 아웃하고 다른 버전을 비교할 수 있습니다.
.xlsx
압축을 푼 경우에도 마찬가지입니다 . .xlsx
파일은 XML 파일의 디렉토리를 압축합니다 ( 내부 하위 구성 요소에서 유효한 xlsx 파일을 올바르게 어셈블하는 방법 참조 ). Git은 압축을 풀지 않는 한 바이너리로 볼 것입니다. 압축을 풀고 .xlsx
아카이브 내부의 개별 XML 파일에 대한 변경 사항을 추적 할 수 있습니다.
.xls
파일 로도이 작업을 수행 할 수 있지만 여기서 문제는 .xls
형식이 바이너리이므로 의미있는 차이점을 얻을 수 없다는 것입니다. 하지만 수정 내역을 확인하고 특정 버전을 체크 아웃 할 수는 있습니다.
.xlsx
은 XML이므로 잘 작동합니다. 일반적으로 두 .xls
파일 을 쉽게 비교할 수있는 방법은 없습니다 . .csv
근처에 배치 할 사전 커밋 후크를 추가 할 수 있으며이를 비교할 수 있습니다.
여기에 적힌 답 이이 경우에 적용될 수 있습니다. xls2txt 라는 도구 는 .xls 파일에서 사람이 읽을 수있는 출력을 제공 할 수 있습니다. 즉, 이것을 .gitattributes 파일에 넣어야합니다.
*.xls diff=xls
그리고 .git / config에서 :
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
물론 다른 파일 유형에 대해서도 유사한 도구를 찾을 수 있으므로 git diff
사무실 문서에 매우 유용한 도구가 될 것입니다. 이것은 현재 내 글로벌 .gitconfig에있는 것입니다.
[diff "xls"]
binary = true
textconv = /usr/bin/py_xls2txt
[diff "pdf"]
binary = true
textconv = /usr/bin/pdf2txt
[diff "doc"]
binary = true
textconv = /usr/bin/catdoc
[diff "docx"]
binary = true
textconv = /usr/bin/docx2txt
Pro Git 책에는 주제에 대한 좋은 장이 있습니다. 8.2 Git 사용자 정의-Git 속성
저는 지난 며칠 동안이 정확한 문제로 고심 해 왔으며 소스 제어에 훨씬 쉽게 저장할 수 있도록 Excel 파일을 추출하고 정규화하는 작은 .NET 유틸리티를 작성했습니다. 여기에 실행 파일을 게시했습니다.
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
.. 그리고 여기에 소스 :
https://bitbucket.org/htilabs/ooxmlunpack
관심이 있다면 좀 더 구성 할 수있게해서 기쁘지만 현재 실행 파일을 폴더 (예 : 소스 저장소의 루트)에 넣어야하며 실행하면 다음과 같이됩니다.
분명히 이러한 모든 것이 필요한 것은 아니지만 최종 결과는 여전히 Excel에서 열리지 만 비교 및 증분 압축에 훨씬 더 적합한 스프레드 시트 파일입니다. 또한 추출 된 파일을 저장하면 버전 기록에서 각 버전에 적용된 변경 사항이 훨씬 더 명확 해집니다.
식욕이 있다면 모든 사람이 내용을 추출하거나 수식 셀에서 값을 제거하는 것을 원하지 않을 것이기 때문에 도구를보다 쉽게 구성 할 수있게되어 기쁩니다. 그러나이 둘은 현재 나에게 매우 유용합니다.
테스트에서 2MB 스프레드 시트는 21MB로 '압축 해제'되었지만 각각의 작은 변경 사항이있는 5 가지 버전을 1.9MB Mercurial 데이터 파일에 저장하고 Beyond Compare in을 사용하여 버전 간의 차이점을 효과적으로 시각화 할 수 있었습니다. 텍스트 모드.
NB : Mercurial을 사용하고 있지만 솔루션을 조사하는 동안이 질문을 읽었으며 Mercurial과 관련된 솔루션은 없으며 Git 또는 다른 VCS에서 제대로 작동합니다.
Tante 는 Git에서 ZIP 기반 파일 형식 관리에 매우 간단한 접근 방식을 권장했습니다 .
~ / .gitconfig 파일을 열고 (아직 존재하지 않는 경우 생성) 다음 스탠자를 추가합니다.
[diff "zip"] textconv = unzip -c -a
Excel 통합 문서 용 오픈 소스 Git 명령 줄 확장을 구축했습니다 : https://www.xltrail.com/git-xltrail .
요컨대, 주요 특징은 git diff
통합 문서 파일 형식에서 작업을 수행하여 통합 문서의 VBA 콘텐츠에 대한 차이점을 표시한다는 것입니다 (언젠가는 워크 시트 콘텐츠에도이 작업을 수행 할 것입니다).
아직 초기 단계이지만 도움이 될 수 있습니다.
다른 답변의 의견에서 언급했듯이 .xlsx 파일은 XML입니다.
XML 디렉토리 ( git
-able)로 이동하려면 .xlsx 파일을 디렉토리에 "압축 해제"해야합니다. Windows에서이를 확인하는 빠른 방법은 <filename> .xlsx 파일의 이름을 <filename> .zip으로 바꾸는 것입니다. 그러면 내부 내용이 표시됩니다. 체크 아웃 할 때 Excel에서 문서를 열기 위해 다른 단계를 수행 할 필요가 없도록 바이너리와 함께 이것을 저장합니다.
이 Excel 유틸리티는 저에게 매우 잘 작동합니다.
통합 문서 및 VBA 매크로를위한 매우 간단한 버전 관리 도구입니다. 버전을 커밋하면 PC의 Git 저장소에 저장됩니다. 나는 그것을 다시 시도하지 않았습니다. SQL 스키마 파일이지만 방법이 있다고 확신합니다.
xltrail
그것보다 훨씬 쉽습니다.
Excel 파일에 대한 나의 접근 방식은 Jon과 비슷하지만 원시 Excel 텍스트 데이터로 작업하는 대신 좀 더 친숙한 형식으로 내 보냅니다.
내가 사용하는 도구는 다음과 같습니다. https://github.com/stenci/ExcelToGit/tree/master
.xlsm 파일을 다운로드하기 만하면됩니다 ( 이 페이지 에서 원시보기 링크를 클릭 하십시오. .). Readme에 설명 된대로 Excel 설정을 확인하는 것을 잊지 마십시오. SQL 데이터를 텍스트 파일로 내보내는 코드를 추가 할 수도 있습니다.
통합 문서는 바이너리 Excel에서 텍스트 파일로의 변환기이자 Windows Git 도구의 실행기이며 Excel과 관련이없는 프로젝트에서도 사용할 수 있습니다.
내 작업 버전은 수십 개의 Excel 통합 문서로 구성됩니다. 이 파일을 사용하여 Excel이 아닌 프로젝트에 대해 Git-gui를 열고 git 폴더를 직접 추가합니다.