최근에 GIT로 전환하고 코드를 호스팅하기 위해 비트 버킷을 선택했습니다.
이제 눈이 내리는 모든 스캔들과 함께, 나는 내 선택을 검토하기로 결정했습니다.
나는 정말 차라리 그 위해의 bitbucket를 계속 것, 내 자신의 서버에 내 데이터를 호스트하고 싶지 않아요.
비트 버킷 자체에 대한 좋은 말은 없지만 개인 데이터 (소스 코드)를 그대로 유지하고 싶습니다.
나는이의 bitbucket와 가능한 경우 궁금, 많은 사람들이 보관 용으로 TruCrypt를 사용 알고 (예. 힘 자식 투명하고 자동이의 Bitbucket로 전송되기 전에 소스 코드 및 파일을 암호화하기 위해 어떻게 할), 그래서 사람이 공유 할 수 있다면? 나는 많은 것을 구글 검색했지만 적절한 방법을 알아낼 수 없었다.
답변
한 가지 해결책은 git ‘s smudge
및 clean
filters 를 사용하는 것 입니다. 그러나이 솔루션에는 몇 가지 심각한 단점이 있습니다.
필터 역할을하는 두 개의 스크립트, 즉 표준 입력에서 읽고 표준 출력에 쓰기를 작성해야합니다. 설명서에서 :
필터 드라이버는 clean 명령과 smudge 명령으로 구성되며, 둘 중 하나는 지정하지 않아도됩니다. 체크 아웃시 smudge 명령이 지정되면 명령에 표준 입력에서 Blob 오브젝트가 제공되고 표준 출력이 작업 트리 파일을 업데이트하는 데 사용됩니다. 마찬가지로 clean 명령은 체크인시 작업 트리 파일의 내용을 변환하는 데 사용됩니다.
예를 들어 openssl을 사용할 때 파일을 작성할 수 있습니다 fooenc.sh
.
#!/bin/sh
openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T
그리고 foodec.sh
:
#!/bin/sh
openssl enc -bf -nopad -d -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T
이 스크립트는 리포지토리 외부 에 보관해야하며 키가 포함되어 있으므로 비밀 로 유지해야합니다 ! 그렇지 않으면 전화를받을 때마다 암호를 요구하지 않기 때문에 편리합니다.
다소 안전한 대안은 GPG를 사용하는 것일 수 있습니다.
.git/config
저장소 의 파일에서이 필터를 지정해야합니다.
[filter "crypt"]
clean = fooenc.sh
smudge = foodec.sh
이것은 오타 가 아닙니다 ! 위의 발췌 문서를 참조하십시오. 이 설정은 체크인시 데이터를 암호화하고 체크 아웃시 암호를 해독합니다.
그런 다음 리포지토리 .git/info/attributes
파일에서 모든 파일에이 필터를 사용하도록 지정합니다.
* filter=crypt
필터링 스크립트를 사용할 수있는 한 작업 디렉토리에는 읽을 수있는 파일이 포함됩니다. 그러나 자식 객체는 암호화됩니다.
이 실제로 배제 참고 하여 필요한 스크립트가없는 모든 컴퓨터에있는 파일을. 따라서 bitbucket은 스토리지로만 작동합니다.
이제 단점은; 이 솔루션은 같은 도구를 만드는 git diff
그에 따라 모든 것을 쓸모 자식의 객체가 이제 모양을 암호화하기 때문에.
편집 : repo의 내용을 암호화 하는 데 도움이되는 git-crypt 또는 git-encrypt
와 같은 도구 가 있습니다.
그리고 diff 문제에 대한 해결책이 있습니다. diff에 특수 필터 사용; textconv 를 추가 스크립트와 함께 사용하여 블롭이 확산 되기 전에 해독합니다.