Организация проектов с помощью gclone
Ранее у меня все проекты хранились в одной директории. То есть я создавал в домашней директории нечто вроде
Projects и затем все что делал сам, или находил на просторах интернета, размещал на одном уровне в этой директории.
Спутся время разобраться во всем этом было проблематично. И не так давно я выработал определенный принцип организации проектов на жестком диске.
Как и раньше, я создаю одну директорию для хранения исходных кодов интересующих проектов. Но затем я провожу
клонирование в поддридектории в зависимости от их источника. К примеру https://github.com/juev/juev.org размещаю в
директории ~/src/github.com/juev/juev.org. Теперь организация стала понятной и даже спустя время исходя из
местоположения проекта понятно, где он размещается в интернете. Так же понятно, что относиться к моим проектам,
а что взято из интереса.
Но каждый раз создавать весь путь вручную надоедает, отнимает время. И для того, чтобы упростить этот процесс, я создал проект gclone . Установить можно с помощью go:
go install github.com/juev/gclone@latest
либо взять бинарник со страницы релизов
. Теперь необходимо определить
переменную окружения GIT_PROJECT_DIR, которая будет указывать на директорию, куда будет проводиться клонирование.
Например:
GIT_PROJECT_DIR="~/src" gclone https://github.com/juev/gclone.git
Команда создаст директорию ~/src/github.com/juev/gclone, в которую будет склонирован проект. Для fish я определил
две функции, которые дополнительно упрощают работу с исходным кодом:
function gcd --argument repo
if test "$argv[1]" = ""
echo "argument is empty"
return
end
cd $(gclone $argv[1])
end
function gcode --argument repo
if test "$argv[1]" = ""
echo "argument is empty"
return
end
code $(gclone $argv[1])
end
первая команда gcd, которая проводит клонирование репозитория в новую директорию, и затем меняет текущую директорию
на директорию проекта. И вторая команда gcode, которая так же создает директории, проводит клонирование и затем
открывает эту директорию в vscode.
Вроде минимальные изменения, но значительно упростили жизнь. Часто использую созданные команды в своем воркфлоу.
Надеюсь проект окажется полезным и для вас. Если будут вопросы или замечания, создавайте issue .