Уникальное имя коммита для авто-пуша на сервер | Zhbert’s Home
Zhbert's Home
Домашняя страничка Zhbert'а

Уникальное имя коммита для авто-пуша на сервер

Для кого-то это может показаться чем-то простым и очевидным, но почему бы не рассказать о том, как можно сделать уникальное имя коммита для пуша на сервер.

У меня некоторые вещи, такие как хранилище Logseq, например, хранятся все в том же Git’е, что и код моих разработок и утилит.

О том, что такое Logseq, и для чего я его использую, я расскажу в одном из следующих постов.

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

Логичнее всего для этого подойдет текущая дата и время создания коммита. Для ее генерации воспользуемся привычной командой date и зададим ей подходящий формат:

date +"%H:%M %d/%m/%Y"

В результате выполнения получится следующее: 19:32 03/01/2023.

Теперь можно вешать это на имя коммита и отправлять изменения на сервер.

Этот процесс тоже удобно автоматизировать, чтобы не ходить каждый раз в нужный каталог и не выполнять там все команды Git вручную. Создадим простой скрипт, который сделает все за нас:

#!/bin/bash

cd ~/logseq
name=`date +"%H:%M %d/%m/%Y"`

git add -A
git commit -m "$name"
git push origin master

Тут мы переходим в нужный каталог, получаем текущее имя, коммитим с ним изменения и отправляем на сервер. Все.

Сохраняем его с расширением .sh, кладем в удобное место (у меня для этого есть специальный каталог ~/scripts) и в нужное время (можно и по Cron’у) выполняем: sh ~/scripts/script.sh. Имя коммита будет каждый раз разным, хотя в текущей вариации оно будет меняться с периодичностью в минуту. Можно задать и более подробный формат, например, с секундами, но я сходу не могу придумать задачу, для которой необходимо коммитить изменения каждую секунду. Ну а если все-таки такая необходимость есть — в man date описано, как получить нужный формат.