2011-12-14 4 views
14

Я хотел бы сохранить все мои dotfiles на GitHub, включая .gitconfig, который требует от меня скрыть маркер GitHub в .gitconfig.Скрывать токен GitHub в .gitconfig

Для этого у меня есть файл «.gitconfig-скрытый маркер», который является файлом я намерен изменить и поставить под мерзавцем, который скрывает маркер:

... 
[github] 
user = giuliop 
token = --hidden-- 
... 

И сценарий оболочки, который мне нужна для запуска, если я изменить файл «.gitconfig-скрытых лексема», чтобы создать файл «.gitconfig»:

cp .gitconfig .gitconfig.backup 
sed 's/--hidden--/123456789/' .gitconfig-hidden-token > .gitconfig 

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

ответ

10

Добавить свой .gitconfig с помощью git add -N.

Затем git add -p, отредактируйте кусок, замените токен на что-нибудь и нажмите. Нет необходимости в дополнительном файле.

Приложение: при дополнительных модификациях вашего файла снова используйте git add -p и отредактируйте кусок, чтобы ваша первоначальная манипуляция не была перезаписана.

+2

Что произойдет, если я впоследствии отредактирую файл, а 'git add' забудет' -p'? Я предполагаю, что токен будет опубликован тогда – gws

+0

@gws: действительно, но тогда вы можете (и, вероятно,) использовать 'git diff --cached' перед фиксацией, а в случае ошибки просто« git reset »также файл. – fge

+2

Я думаю, что правильный подход заключается в использовании 'include' за ответ @ddopson – Hedgehog

1

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

Вы можете просмотреть мой сценарий here.

34

Я просто исправил это для себя. «Правильный» способ решить проблему состоит в том, чтобы разделить ваш gitconfig на два файла, открытый с псевдонимом/config/etc и частный файл, который хранит ваше имя пользователя и секреты. Как и ...


От https://github.com/ddopson/dotfiles ...

.gitconfig:
[include] 
    # For username/creds/etc 
    path = ~/.gitconfig.local 

[alias] 
    ... 
.gitconfig.local:
[user] 
    user = ddopson 
    name = Dave Dopson 
    email = [email protected] 
    token = a123uber456secret789ceprivate000key78 

[credential] 
    helper = osxkeychain 
.gitignore:
/.gitconfig.local 
+1

Если вы сохраняете файл' .gitconfig.local' в том же каталоге разработки, что и ваш репозиторий dotfiles git, не забудьте добавить '.gitconfig .local' в '.gitignore вашего проекта. –

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