git encrypt/decrypt remote repository files while push/pull

后端 未结 5 438
梦如初夏
梦如初夏 2020-11-28 04:58

Is it possible to automatically encrypt files via \'git push\' before transferring to a remote repository? And automatically decode them while \'git pull\'.

I.e, if

5条回答
  •  旧时难觅i
    2020-11-28 05:04

    There are two ways to do this.

    One is to use a project like git-crypt, http://www.agwa.name/projects/git-crypt/ which adds in fiters to pull and push process, or set up the filters manually as described here https://gist.github.com/shadowhand/873637

    Another way if you are working in a linux environment, is to use ecryptfs. For this scenario, in base of your project directory you could, for example, create two directories

    project/encrypted_src
    
    project/src
    

    Then from the root of the project directory you would mount using the command

    sudo mount -t ecryptfs encrypted_src src
    

    entering a pass-phrase and accepting the defaults when prompted. At this point, files placed in src/ will be encrypted into encrypted_src/ on the fly. When you are finished just

    sudo umount src
    

    and only the encrypted files remain. Essentially files are committed and pushed from encrypted_src/ and edited in src. As long as everyone uses the same pass-phrase (or mounts with the same key) the repo can be shared among developers. Also you can get fancier. You can encrypt file names as well as just file contents, or encrypt different folders in a repo with different pass-phrases or keys. The last feature is nice if you have configuration files with sensitive access information that individual groups (dev, test, production) will want to maintain privately.

    That said, though, be aware that once you start encrypting stuff. You loose a lot of the advantages of source control like being able to see diffs between various commits. If you have a project of any size the ability to review commits will be invaluable. If you expect bugs, at some point or another, the ability to analyse and find their point of introduction by back tracking through commit history will also be invaluable. So secure your server first and then use encryption only where in makes sense to protect sensitive info in source control. Just my 2 cents.

提交回复
热议问题