2016-11-25 8 views
0

내 Git 저장소에 Microsoft Visio 2013 다이어그램을 저장하고 싶습니다. 이 다이어그램은 나중에 스핑크스로 제작 된 소프트웨어 문서를 위해 SVG와 PDF로 변환됩니다.열려있는 문서 (.docx, .vsdx, ...)를 Git에 저장하는 방법은 무엇입니까?

불행히도, 오픈 문서 파일은 바이너리 파일입니다 (실제로는 ZIP 아카이브입니다). 힘내는 바이너리 파일을별로 좋아하지 않습니다.

vsdx 파일의 압축을 풀면 Git을 사용하여 더 많은 파일을 xml 개 더 얻을 수 있다는 것을 깨달았습니다.

문제는 저장소에 압축되지 않은 열린 문서 파일 만 저장하고 작업 디렉토리에는 압축 된 버전을 유지하기 위해 Git에 일부 스크립트를 연결해야하는 문제입니다. 전반적인 저장소 공간을 줄이는 것이 실현 가능하고 바람직한 것입니까?

목표는 내 Visio 다이어그램에서 모양을 이동할 경우 저장소에서 내 메가 바이트 vsd 파일을 거의 복제하지 않기를 바랍니다. 나는 한 줄의 변화로 2 메가 바이트의 XML 파일이 Git Packfiles에서 압축 될 더 좋은 기회라고 생각한다.

맞습니까?

+1

본 적이 있습니까? http://stackoverflow.com/questions/17501146/uncompressing-zipped-data-files-before-committing-to-repository –

+0

나는 당신이 말하는 모든 것에 동의합니다.체크 아웃하기 전에 파일의 압축을 풀고 구성 요소 XML 파일을 추가하지 못하게하는 이유는 무엇입니까? –

답변

1

큰 Visio 파일 작업시 메모리 문제가 염려되는 경우 git의 분산 된 특성을 활용하고 여러 저장소를 설정하는 것이 좋습니다. 그렇게.


Root Folder (Git Repo) 
    .gitignore (that ignores the Visio Folder) 
    Visio Folder (Also a Git Repo) 

일 자유롭게 걱정없이 Visio 파일을 커밋. 그런 다음 변경 사항이 만족 스러우면 원하는 파일을 디렉토리로 옮기십시오. 그것을 추출하고 커밋하십시오. 이것은보기 흉한 것처럼 보일지 모르겠지만 Visio 폴더가 메모리 문제로 인해 작동하지 않는 경우, 필요한 모든 것이 그 아래에있는 git repo에 있기 때문에 그냥 부숴 버릴 수 있습니다. (큰 바이너리 파일을 저장소에서 공간을 차지하지 않게하는 유일한 방법은 커밋하지 않는 것입니다.)

이 솔루션이 너무 비싸면 Visio 폴더를 루트 폴더의 원격 폴더로 설정하십시오. Visio 폴더에 거대한 파일이 포함 된 커밋과 포함되지 않은 커밋이 포함 된 별도의 분기가 두 개 있습니다. Visio 파일없이 분기에서 가져 오기 만하면됩니다. 그래도 컨트롤을 얻지 못한다면 중요한 워크 플로와 히스토리를 생성 할 수있는 저장소 구조가 생길 때까지 원격 설치, 하위 폴더 등이 필요합니다.

추가 로컬 원격


cd 'Root Folder' 
git remote add visiofiles 'Visio Folder' 

당신이 모험 기분 경우 (그들은 당신이 커밋 할 때 파일에서 호출 체크 아웃받을 자식의 "깨끗한"와 "얼룩"필터를 조사 할 수 - 그들은 ' 팀과 다른 들여 쓰기 규칙을 사용할 수 있도록 의도되었지만, 물건을 지퍼 링하거나 지퍼를 풀 수도 있습니다). 변경 사항을 더 잘 검사 할 수 있도록 Visio 파일을 추출하는 경우 git의 textconv 구성을 텍스트로 처리 할 수 ​​있습니다. Git은 파일들에 대한 커스텀 diff를 호출 해 보겠습니다. 한가지 방법은 그 파일을 문자열로 변환하고 그에 대한 diff를 실행하는 것입니다. gitconfig 및 .gitattributes 파일을 약간 익숙하게하고 문자열 변환에 적합한 프로그램을 찾으십시오.

그러나 설명하는 문제는 메모리 문제이므로 사용 가능한 후크 및 구성이 필요하지 않을 수 있습니다.