Как автоматически скачивать файлы с github без копирования репозитория - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть несколько сценариев, которые я использую почти каждый день в своей работе.Я разрабатываю и поддерживаю их на своем персональном ноутбуке.У меня есть локальный репозиторий 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
}

1 Ответ

0 голосов
/ 16 ноября 2018

на этой удаленной машине, не делайте rm, затем clone, храните хранилище где-нибудь, просто выполните pull.Поскольку вы сказали, что не будете изменять файлы на этом компьютере, конфликтов не будет.

Для файлов сценариев.Не делайте cp, вместо этого создавайте символические ссылки (ln -s) на ваш целевой каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...