Если при попытке подключиться к удалённому репозиторию в docker-контейнере получена ошибка:
git@host.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Нужно убедиться, что publickey загружен в ssh-agent:
ssh-add -l 4096 SHA256:NcKisT6y97VqwskqZ2UPy7Ub6Voc7jzv0fCYYi92X1I /home/user/.ssh/id_rsa (RSA)
Если ключ не добавлен - добавить:
ssh-add /home/user/.ssh/id_rsa
Далее проверить, что переменная $SSH_AUTH_SOCK содержит путь к ssh-сокету и он прокидывается в docker-контейнер:
docker run -e SSH_AUTH_SOCK=/var/run/ssh-auth.sock -v $(SSH_AUTH_SOCK):/var/run/ssh-auth.sock
Следующий шаг - проверить, что внутри контейнера publickey корректно работает:
ssh -Tvvv git@host.com -p 22222
Если в выводе получена ошибка: send_pubkey_test: no mutual signature algorithm, значит устарел алгоритм по которому генерировался ключ. Нужно либо его перегенерировать использую более современный алгоритм, либо добавить в конфигурацию ssh-клиента опцию принудительного использования ключа с нужным алгоритмом. Например:
Host * PubkeyAcceptedKeyTypes +ssh-rsa
Для того, чтобы сделать коммит с произвольной датой, можно воспользоваться специальным параметром --date команды git commit:
git commit -m 'Commit with yesterday date' --date="$(date -R --date='1 days ago')"
Например, понадобилось создать репозиторий без ветки master. Просто так её удалить нельзя, т.к. на неё ссылается HEAD. Переназначить HEAD можно командами:
# Создаём ветку prod из master git checkout -b prod # Делаем ссылку HEAD на prod git symbolic-ref HEAD refs/heads/prod # Удаляем локальную ветку master git checkout prod && git branch -D master # Создаём в репозитории ветку prod git push -u origin prod # Делаем ссылку на HEAD в репозитории git remote set-head origin prod # В удалённом репозитории запускаем команду git symbolic-ref HEAD refs/heads/prod # Удаляем ненужную ветку master git push origin :master
Другим пользователям этого репозитория потребуется запустить команду:
git remote update --prune origin
Для того, чтобы корректно отображались utf-8 символы в названиях директорий и файлов, надо изменить ряд настроек в конфиге:
git config [--global] core.quotepath Off git config [--global] i18n.logoutputencoding utf8 git config [--global] i18n.commitencoding utf8
Ширина табов:
Находим в файле gitweb.cgi строчку:
sub untabify {
...
if (my $count = (8 - ($pos % 8))) {
...
В меняем цифры на нужное кол-во пробелов в табе :
sub untabify {
...
if (my $count = (4 - ($pos % 4))) {
...
Установка локали:
Находим строчку:
binmode STDOUT, ':utf8';
меняем на:
binmode STDOUT, ':cp1251';
В файл gitweb.conf добавляем переменные:
$fallback_encoding = 'cp1251'; $default_text_plain_charset = 'cp1251';