我有许多几乎每天都在工作中使用的脚本。我在个人笔记本电脑上开发和维护这些软件。我有一个本地git存储库,可以跟踪更改,并且我在github上有一个存储库,可以将更改推送到该存储库。
我在远程超级计算机上做了很多工作,并且在那里经常使用脚本。我想使用自己维护的脚本来更新远程/home/bin
,但又不会因存储库而使系统混乱。
我当前的解决方案并不理想。我在下面的.bashrc
中添加了以下代码。每当我登录时,我的存储库都会被删除,然后从github克隆我的项目。然后,将所需的脚本文件复制到我的bin中,并使它们可执行。
这类作品,但感觉不佳。我想直接下载脚本文件,而不必担心git存储库。无论如何,我永远不会从远程计算机上编辑脚本文件,因此我只想从github获取文件。
我本以为wget
也许可以工作,但是在github上将原始文件页面的URL包括进来感觉并不稳健。如果我重命名文件,我想我也必须更新代码。至少我当前的解决方案是可靠的(只要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/*
基于Kent的解决方案,我定义了一个更新脚本的函数。为了避免符号链接的任何问题,我只是取消所有链接并重新链接。但这可能只是我的偏执。...
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
}
答案 0 :(得分:3)
在该远程计算机上,先执行rm
,然后先执行clone
,然后执行pull
,然后将存储库保留在某个位置。因为您说过不会更改该计算机上的文件,所以不会发生冲突。
用于脚本文件。不要执行cp
,而是创建指向目标目录的符号链接(ln -s
)。