Tools

[Git] 문서파일 비교

git 레포지토리에는 MS-OFFICE 문서 파일이 포함되는 경우가 많이 있습니다.

만약 본인 또는 다른 사람이 문서 파일을 변경한 경우 문서의 어떤 부분이 변경 되었는지 확인 할 수 있다면 보다 효율적으로 업무를 볼 수 있습니다.

해당 내용은 Pro Git 이라는 책에도 어느정도 설명이 된 부분이지만 실제로 테스트를 해가며 적용한 내용을 공유하고자 합니다.

DOC[X] 비교

문서 파일을 비교하는 것은 pandocApache 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 문서 및 이미지 파일 비교도 가능합니다.

해당 내용은 나중에 올리도록 하겠습니다.

기본

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중