2014-11-21 5 views
1

Я работаю над файлом с кучей конфиденциальной информации (например, паролями).Очистка конфиденциальной информации при запуске «git commit»

Я работаю с контролем версий и нахожу это обременительным, чтобы стереть эти пароли каждый раз, когда я совершаю и нажимаю этот файл.

Есть ли способ написать сценарий где-нибудь, чтобы очистить всю эту конфиденциальную информацию, когда я запускаю «git commit»?

Другими словами, если мой файл выглядит следующим образом:

var password = "test123" 

Я хочу, чтобы мой файл, чтобы посмотреть, как это, когда я его совершить:

var password = "" 

ответ

2

Стандарт (и правильно, действительно) совет заключается в том, чтобы хранить эти пароли в другом месте, например, читать их из другого файла, не контролируемого версией (~/.netrc и т. д.).

Сказанное может использовать крюк предварительной фиксации для проверки пароля в индексе и прервать фиксацию, если она присутствует (это опять-таки стандартный совет: не изменять вещи в предварительных фиксациях, просто скажите пользователю, что есть что-то не так, и остановитесь). Или вы могли бы даже связать крючок pre-commit с индексом так, чтобы пароль отсутствовал.

Обратите внимание, что крюк предварительной фиксации может быть обойден пользователем, поэтому это не является надежным, независимо от того, как вы его настроили (в качестве верификатора или в качестве модификатора).


Помните, что новое обязательство будет производиться из содержимого индекса, не то, что в рабочем каталоге. Например:

$ echo this is what will be committed > foo.txt 
$ git add foo.txt     # put current foo.txt into the index 
$ echo the current contents are completely different > foo.txt 
$ git commit -m 'demonstrate index vs work dir' 

Версия foo.txt коммита это создает читает «это то, что будет совершено», даже несмотря на «текущее содержание совершенно разные» является то, что в foo.txt, если вы посмотрите на него сейчас , Для того, чтобы увидеть, что на самом деле в индексе, используйте, например .:

$ git cat-file -p :0:foo.txt 

См gitrevisions для каких :0:foo.txt средств.

Смежные вопросы