按计划将更改推送到本地 Git 存储库(Ubuntu)

按计划将更改推送到本地 Git 存储库(Ubuntu)

无聊的背景- 概括:我知道我们没有正确使用 GIT!
这最初是一个小型业余项目,后来发展迅速 - 我的公司使用 Git 来跟踪/管理定制的基于 Web 的软件平台的更改并充当中央存储库。大约 300 台移动设备在启动时从自托管的 Intranet 服务器拉取到本地克隆存储库,这样它们就可以在未连接到网络时访问最新版本的软件(我们使用分支,以便它们只接触成熟/测试过的代码)。

现在我们又向前迈进了一步——我们有一个每日更新的“零件”数据库。我使用 cron 脚本创建了这个数据库的单独版本,以创建可以在本地“未连接的机器”上打开的独立版本。

我的问题
我有一组 PHP 脚本,用于获取数据库表数据并将其导出为应用程序所需的平面文件格式,并将自上一周期以来的任何其他图像复制到正确的位置。所有文件都存储在/var/www/clonedrepository

然后我想在目录上运行以下命令:

git add .
git commit -m "Automatic update: todaysdate"
git push

该存储库是/home/git/repository使用 git deamon 和 apache 符号链接克隆的,允许 http 访问(用于哑设备克隆)和 SSH(供成人编辑/更新)。

问题是,我是一名网络程序员,但我对此并不熟悉。我设置了 git 存储库,并且熟悉命令行,但我不知道从哪里开始最好。

附注:永远不会发生冲突,因为没有用户会编辑数据文件,并且系统不会编辑数据文件以外的任何内容。

总结一下,我的 Ubuntu Linux 机器上有一个中央存储库(/home/git/repository),我想从/var/www/clonedrepository同一机器上的克隆存储库( )每天更新它。

答案1

好的,我自己解决了这个问题......

1)我已经设置了一个包含以下行的脚本:

cd /var/www/partsdb/ >> /home/git/push.log
git pull >> /home/git/push.log
git add . >>/home/git/push.log
git commit -a -m "Scheduled Commit: `date`" >>/home/git/push.log
git push >> /home/git/push.log
echo "Push Backup Successful `date`" >> /home/git/push.log

此脚本将移动到工作存储库,从中央存储库提取所有更改(请记住,这些更改将仅有的影响程序文件,不是数据文件),添加任何更改的数据文件(/data为了清楚起见,存储在子目录中)提交更改(包括基于日期的自动消息以跟踪更改/责备),然后推回到存储库。

编辑:我已经将-a标志添加到提交命令中,它将删除自动更新脚本删除的所有文件(add .添加了任何新文件)。[/编辑]

2)我从 crontab 调用此脚本,以 root 身份执行该脚本(因为 root 是唯一有权在 git 的主文件夹和 /var/www 文件夹中写入的用户),使用以下命令:

0 * * * * root /home/git/gitpush.sh

这将每小时运行一次脚本 - 虽然独立的移动设备只会在启动时(每日/上午)从数据库中提取数据,但本地网络用户将始终拥有最新版本(已推送到主分支)。

相关内容