Excel 파일 및 SQL 스키마 파일에서 더 나은 문서 버전 제어를 수행하는 방법 담당하고 있습니다. 이러한 파일에 대해 더 나은

저는 여러 Excel 파일과 SQL 스키마 파일을 담당하고 있습니다. 이러한 파일에 대해 더 나은 문서 버전 제어를 수행하려면 어떻게해야합니까?

이 파일에서 수정 된 부분 (다른 부분)을 알고 모든 버전을 참조 용으로 보관해야합니다. 현재 파일 이름에 타임 스탬프를 추가하고 있지만 비효율적 인 것 같습니다.

더 나은 문서 버전 관리를 수행 할 수있는 방법이나 좋은 방법이 있습니까?

그건 그렇고, 편집자는 이메일을 통해 파일을 보냅니다.



답변

질문에 태그를 추가 했으므로 나는 당신이 이것을 위해 Git 사용법에 대해 묻는다고 가정합니다.

음, SQL 덤프는 일반 텍스트 파일이므로 Git으로 추적하는 것이 좋습니다. 리포지토리를 만들고 저장하기 만하면됩니다. 파일의 새 버전을 받으면 파일을 덮어 쓰고 커밋하면 Git이 모든 것을 알아 내고 수정 날짜를 확인하고이 파일의 특정 버전을 체크 아웃하고 다른 버전을 비교할 수 있습니다.

.xlsx압축을 푼 경우에도 마찬가지입니다 . .xlsx파일은 XML 파일의 디렉토리를 압축합니다 ( 내부 하위 구성 요소에서 유효한 xlsx 파일을 올바르게 어셈블하는 방법 참조 ). Git은 압축을 풀지 않는 한 바이너리로 볼 것입니다. 압축을 풀고 .xlsx아카이브 내부의 개별 XML 파일에 대한 변경 사항을 추적 할 수 있습니다.

.xls파일 로도이 작업을 수행 할 수 있지만 여기서 문제는 .xls형식이 바이너리이므로 의미있는 차이점을 얻을 수 없다는 것입니다. 하지만 수정 내역을 확인하고 특정 버전을 체크 아웃 할 수는 있습니다.


답변

여기에 적힌 답 이이 경우에 적용될 수 있습니다. 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

관심이 있다면 좀 더 구성 할 수있게해서 기쁘지만 현재 실행 파일을 폴더 (예 : 소스 저장소의 루트)에 넣어야하며 실행하면 다음과 같이됩니다.

  • .xlsx 및 .xlsm 파일이 있는지 폴더 및 하위 폴더를 검색합니다.
  • 파일의 사본을 * .orig로 가져옵니다.
  • 각 파일의 압축을 풀고 압축하지 않고 다시 압축하십시오.
  • 유효한 XML 인 아카이브의 모든 파일을 예쁘게 인쇄하십시오.
  • calcchain.xml 파일을 아카이브에서 삭제합니다 (많이 변경되고 파일 내용에 영향을주지 않기 때문에).
  • 형식이 지정되지 않은 텍스트 값을 인라인합니다 (그렇지 않으면 단일 셀이 수정 된 경우에도 내부 XML이 크게 변경되는 조회 테이블에 보관됩니다).
  • 수식이 포함 된 모든 셀에서 값을 삭제합니다 (다음에 시트를 열 때 계산할 수 있으므로).
  • 압축을 푼 zip 아카이브 콘텐츠를 포함하는 * .extracted 하위 폴더를 만듭니다.

분명히 이러한 모든 것이 필요한 것은 아니지만 최종 결과는 여전히 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


답변

열린 문서 확장자를 사용하십시오 .fods. Excel과 LibreOffice에서 모두 열 수있는 압축되지 않은 일반 XML 마크 업 형식이며 차이점이 좋아 보일 것입니다.


답변

Excel 통합 문서 용 오픈 소스 Git 명령 줄 확장을 구축했습니다 : https://www.xltrail.com/git-xltrail .

요컨대, 주요 특징은 git diff 통합 문서 파일 형식에서 작업을 수행하여 통합 문서의 VBA 콘텐츠에 대한 차이점을 표시한다는 것입니다 (언젠가는 워크 시트 콘텐츠에도이 작업을 수행 할 것입니다).

아직 초기 단계이지만 도움이 될 수 있습니다.


답변

다른 답변의 의견에서 언급했듯이 .xlsx 파일은 XML입니다.

XML 디렉토리 ( git-able)로 이동하려면 .xlsx 파일을 디렉토리에 “압축 해제”해야합니다. Windows에서이를 확인하는 빠른 방법은 <filename> .xlsx 파일의 이름을 <filename> .zip으로 바꾸는 것입니다. 그러면 내부 내용이 표시됩니다. 체크 아웃 할 때 Excel에서 문서를 열기 위해 다른 단계를 수행 할 필요가 없도록 바이너리와 함께 이것을 저장합니다.