Посты по тегу: Git

Заставляем GitX подписывать коммиты

Я часто использую GitX, как вариант замены коммандной строки, т.к. в нем удобно добавлять несколько коммитов один за одним, выбирая разные файлы или группы файлов. Но вот незадача, он не умеет ставить на commit GPG подпись. Т.е. получается в истории коммитов часть подписана, а часть нет. Некрасиво.

Чтож, научить его это делать несложно, если написать простой wrapper.

Для начала в .gitconfig добавляем такие строки:

[commit]
  gpgsign = true

Теперь создаем враппер по пути что-то типа ~/bin/gitx-signed-commit с содержимым:

1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash

args=("$@")

if [[ "$1" = "commit-tree" ]] && [[ "$(git config --get commit.gpgsign)" = "true" ]]; then
  args=("commit-tree" "-S" "${args[@]:1}")
fi

git "${args[@]}"

Даем права на запуск:

$ chmod 755 ~/bin/gitx-signed-commit

Осталось подключить в GitX. Для этого идем в настройки, выбираем вкладку General, тыкаем на Git Executable и выбираем наш скрипт.

Все. С этого момента все коммиты будут подписываться корректно.

Очистка смердженных веток

По роду своей деятельности приходится создавать довольно много веток в репозитории с кодом инфраструктуры и поддерживать все это во вменяемом состоянии становится все сложнее.

Пришлось что-то придумывать.

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

Первое - это забираем и подчищаем ветки из remote:

$ git fetch -p

Теперь можно посмотреть уже смердженные ветки:

$ git branch --merged

В результате мы получим все смердженные ветки, но в списке будет и master. Надо будет его отфильтровать.

Теперь можно удалить эти смердженные ветки:

$ git branch -d branch_name

Собираем это все в алиас. В ~/.gitconfig добавляем строку в секцию [alias]:

[alias]
    cleanup = "!git checkout master && git fetch -p && git branch --merged | grep -v '* ' | xargs -I {} git branch -d {}"

просто используем:

$ git cleanup

В результате получаем чистый репозиторий: все смердженные ветки будут вычищены полностью.