git
레포지토리에는 MS-OFFICE
문서 파일이 포함되는 경우가 많이 있습니다.
만약 본인 또는 다른 사람이 문서 파일을 변경한 경우 문서의 어떤 부분이 변경 되었는지 확인 할 수 있다면 보다 효율적으로 업무를 볼 수 있습니다.
해당 내용은 Pro Git 이라는 책에도 어느정도 설명이 된 부분이지만 실제로 테스트를 해가며 적용한 내용을 공유하고자 합니다.
DOC[X] 비교
문서 파일을 비교하는 것은 pandoc 과 Apache Tika 를 사용하는 방법이 있습니다. 물론 이외에 여러가지 방법이 있습니다.
pandoc
적용방법
1. Git Config 파일 수정
아래의 내용을 `.gitconfig` 파일에 추가합니다. `USER_HOME` 디렉토리는 `C:/Users/로그인계정` 입니다.
[USER_HOME/.gitconfig]
[diff "pandoc"]
textconv=pandoc --to=markdown
prompt = false
[alias]
wdiff = diff --word-diff=color --unified=1
2. Git Repository 디렉토리에 .gitattribute
파일 추가
Git 레포지토리로 이동하여 .gitattribute
파일을 생성한 후 아래의 내용을 넣습니다.
*.docx diff=pandoc
3. 문서 변경 부분 확인
저는 임의로 `test.docx` 라는 문서를 만들고 테스트를 했습니다.
`test.docx` 라는 파일에는 애국가가 적혀 있습니다.
[test.docx]
동해물과 백수산이 마르고 닳도록 하느님이 보우하사 우리나라만세.
이후 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세
라는 후렴부를 추가했습니다.
비교된 결과를 확인해보겠습니다.
$ git diff
diff --git a/test.docx b/test.docx
index 44c02f2..27dc279 100644
--- a/test.docx
+++ b/test.docx
@@ -1 +1,3 @@
동해물과 백수산이 마르고 닳도록 하느님이 보우하사 우리나라만세.
+^M
+무궁화 삼천리 화려강산 대한 사람 대한으로 우리나라 만세.^M
불필요한 글자가 출력되기는 하지만 수정된 내용이 표시되었습니다.
무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세
소절에서 화려강산
이란 단어를 삭제하였습니다.
$ git diff
diff --git a/test.docx b/test.docx
index 27dc279..71bbf31 100644
--- a/test.docx
+++ b/test.docx
@@ -1,3 +1,3 @@
동해물과 백수산이 마르고 닳도록 하느님이 보우하사 우리나라만세.
-무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세.
+무궁화 삼천리 대한 사람 대한으로 길이 보전하세.^M
변경된 라인이 모두 출력됩니다.
Tika
적용방법
Apache Tika
의 경우 PPTX
포맷과 DOCX
포맷을 모두 지원한다는 장점이 있습니다.
1. Tika
다운로드
https://tika.apache.org/download.html 에서 tika-app
항목을 다운로드 합니다. 제가 테스트 하는 시점에서 tika
버전은 1.12 입니다.
2. 환경 변수 설정
다운로드한 tika-app-1.12.jar
파일을 환경 변수에 추가하거나 저장 위치를 확인합니다.
3. 배치 파일 생성
배치 파일은 .gitconfig
에서 호출하기 위함과 파라미터를 받기 위함입니다. tika
를 실행할 때 사용하는 옵션에는 여러종류가 있습니다. (링크참조)
[USER_HOME/tika.bat]
java -jar [TIKA 저장경로] -t --encoding=UTF-8 %1
4. `.gitconfig` 파일 수정
위에서 `pandoc` 적용 방법에서 수정한 `.gitconfig` 파일을 다시 수정합니다.
아래 부분에서 `openxml` 부분이 추가 되었습니다. `textconv` 속성에 위에서 작성한 `tika.bat` 파일의 경로를 지정합니다.
[USER_HOME/.gitconfig]
[diff "pandoc"]
textconv=pandoc --to=markdown
prompt = false
[alias]
wdiff = diff --word-diff=color --unified=1
[diff "openxml"]
textconv=C:/Users/coozplz/tika.bat
5. Git Repository 디렉토리에 .gitattribute
파일 수정
위에서 설정된 .gitattribute
파일을 아래와 같이 수정합니다.
*.docx diff=openxml
*.pptx diff=openxml
6. 문서 변경 부분 확인
위에서 수정한 내용을 커밋한 상태가 아니기 때문에 동일한 내용이 다시 출력됩니다.
$ git diff
diff --git a/.gitattributes b/.gitattributes
index 51cead2..ef6a520 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,2 @@
-*.docx diff=pandoc
+*.docx diff=openxml
*.pptx diff=openxml
warning: LF will be replaced by CRLF in .gitattributes.
The file will have its original line endings in your working directory.
diff --git a/test.docx b/test.docx
index 27dc279..71bbf31 100644
--- a/test.docx
+++ b/test.docx
@@ -1,4 +1,4 @@
-D:\temp>java -jar "C:\\Users\\coozplz\\tika.jar" -t --encoding=UTF-8 C:/Users/coozplz/AppData/Local/Temp/IjVuPa_test.docx
+D:\temp>java -jar "C:\\Users\\coozplz\\tika.jar" -t --encoding=UTF-8 test.docx ^M
동해물과 백수산이 마르고 닳도록 하느님이 보우하사 우리나라만세.
-무궁화 삼천리 화려강산 대한 사람 대한으로 길이보전하세.
+무궁화 삼천리 대한 사람 대한으로 길이보전하세
실행이 약간 느리기는 하나 문제없이 출력되는 것을 확인할 수 있습니다.
PPTX 변경 내용 확인
test.docx
문서와 마찬가지로 애국가 1절을 후렴부 없이 입력하고 커밋한 후 후렴부를 추가하였습니다.
$ git diff
diff --git a/test.pptx b/test.pptx
index 64fc17b..09ecd25 100644
--- a/test.pptx
+++ b/test.pptx
@@ -1,9 +1,10 @@
-D:\temp>java -jar "c:\\Users\\coozplz\\tika.jar" -t --encoding=UTF-8 C:/Users/coozplz/AppData/Local/Temp/F4N97a_test.pptx
+D:\temp>java -jar "c:\\Users\\coozplz\\tika.jar" -t --encoding=UTF-8 test.pptx ^M
애국가
1절
동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세.
+무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세.
PPT문서를 텍스트 형태로 비교하는 내용을 확인 할 수 있습니다.
위에서 언급은 하지 않았지만 xlsx
문서 및 이미지 파일 비교도 가능합니다.
해당 내용은 나중에 올리도록 하겠습니다.