У меня есть несколько сценариев, которые я использую почти каждый день в своей работе.Я разрабатываю и поддерживаю их на своем персональном ноутбуке.У меня есть локальный репозиторий git, в котором я отслеживаю изменения, и у меня есть репозиторий на github, куда я отправляю свои изменения.
Я выполняю большую часть своей работы на удаленном суперкомпьютере и использую там свои скриптымного.Я хотел бы, чтобы мой удаленный /home/bin
обновлялся с помощью поддерживаемых сценариев, но без загромождения системы моим хранилищем.
Мое текущее решение не кажется идеальным.Я добавил следующий код ниже к моему .bashrc
.Всякий раз, когда я вхожу в систему, мой репозиторий будет удален, и я затем клонирую свой проект из github.Затем я копирую файлы сценариев, которые хочу, в свою корзину и делаю их исполняемыми.
Это работает, но не похоже на элегантное решение.Я хотел бы просто скачать файлы сценариев напрямую, не беспокоясь о репозитории git.В любом случае, я никогда не редактирую свои файлы сценариев с удаленного компьютера, поэтому я просто хочу получить файлы от github.
Я думал, что, возможно, wget
может сработать, но было не очень удобно включатьURL-адрес страницы необработанного файла на github;если я переименую файл, я полагаю, что мне придется обновить и код.По крайней мере, мое текущее решение является надежным (пока ссылка на github не меняется).
Код в моем .bashrc:
REPDIR=mydir
if [ -d $REPDIR ]; then
rm -rf $REPDIR
echo "Old repository removed."
fi
cd $HOME
git clone https://github.com/user/myproject
cp $REPDIR/*.py $REPDIR/*.sh /home/user/bin/
chmod +x /home/user/bin/*
На основе решения Кента я определил функциюэто обновляет мои сценарии.Чтобы избежать каких-либо проблем с символическими ссылками, я просто отсоединяю все и перекомпоновываю.это может быть просто моя паранойя, хотя ....
function updatescripts() {
DIR=/home/user/scripts
CURR_DIR=$PWD
cd $DIR
git pull origin master
cd $CURR_DIR
for file in $DIR/*.py $DIR/*.sh; do
if [ -L $HOME/bin/$(basename $file) ]; then
unlink $HOME/bin/$(basename $file)
fi
ln -s $file $HOME/bin/$(basename $file)
done
}