4

Недавно я переключился на GIT и выбрал bitbucket для размещения своего кода.

Теперь со всем снежным скандалом, я решил пересмотреть свой выбор.

Я действительно не хочу размещать свои данные на своем собственном сервере, я бы предпочел использовать для этого bitbucket.

У меня нет ничего, кроме хороших слов о самих битбакетах, но я просто хочу убедиться, что мои личные данные (исходный код) остаются такими.

Я знаю, что многие люди использовали TruCrypt с DropBox. Интересно, возможно ли это с помощью bitbucket (т. Е. Заставить git прозрачно и автоматически шифровать исходный код и файлы перед отправкой в bitbucket), если так, то кто-нибудь может поделиться, как это сделать? Я много гуглил, но не мог найти правильный способ сделать это.

1 ответ1

9

Одним из решений может быть использование smudge фильтра и clean фильтров. Это решение имеет серьезные недостатки, о которых мы поговорим позже.

Вам нужно написать два сценария, которые действуют как фильтры, то есть читать со стандартного ввода и записывать в стандартный вывод. Из документации:

Драйвер фильтра состоит из команды 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

Пока доступны сценарии фильтрации, рабочий каталог будет содержать читаемые файлы. Но объекты git будут зашифрованы.

Обратите внимание, что это исключает использование файлов на любом компьютере, на котором нет необходимых сценариев. Таким образом, bitbucket будет работать только как хранилище.

Теперь о недостатках; Это решение также делает бесполезными такие инструменты, как git diff и все, что от этого зависит, поскольку объекты git теперь являются зашифрованными BLOB-объектами.

Изменить: Есть такие возможности, как git-crypt или git-encrypt, чтобы помочь вам с шифрованием содержимого вашего репо.

И есть решение проблемы diff; использование специального фильтра для различий; использование textconv с дополнительным сценарием для дешифрования больших двоичных объектов перед их отображением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .