3

我正在尝试使用 subgit 工具将我们的 subversion 存储库转换为 git。我成功建立了对 git 存储库的颠覆,并且它已经正常工作了一段时间,但是在我通过工作站重新启动后,颠覆的变化停止出现在 git 中。我再次运行 subgit install 并且它现在可以工作,但我认为这不是正确的方法。如何设置 subgit 使其在重新启动后继续工作?

4

2 回答 2

6

事实上,SubGit 运行一个守护进程来检查新的 SVN 更改(默认每分钟一次)。如果不是在每次 Git 推送时启动,守护程序会自动启动,所以如果 Git 推送到您的存储库的频率足够高,并且您不太关心立即有新的 SVN 更改,您可以什么都不做,并且在第一次 Git 推送时,守护程序将开始。

但是,如果让 Git 存储库保持最新对您很重要,您需要运行

$ subgit fetch --async /path/to/git/repository

系统启动时。该命令将启动将存储库与 SVN 同步的守护程序。请注意,代表同一用户运行包括此命令在内的所有 SubGit 命令很重要(它也应该是 /path/to/git/repository 的所有者;通常,如果您使用的是GitLab ,它是“git”或“www -data”,如果您使用的是 Apache 和 git-http-backend )。

其中一种方法是创建一个init.d脚本启动 SubGit 守护进程

$ su -u git subgit fetch --async /path/to/git/repository

并停止它:

$ su -u git subgit shutdown /path/to/git/repository

如果你的系统是 debian,你可以使用这个 init.d脚本生成器。

我是 SubGit 开发人员之一。

于 2017-05-23T11:51:11.560 回答
1

只是Dmitry-pavlenko所说的扩展,使用 systemd,我能够关注这篇文章并执行以下操作以在我的 gitlab 容器中将 subgit 添加到 systemd:

echo '[Unit]
Description=Kick off subgit daemon on boot

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > subgit fetch --async /var/opt/gitlab/git-data/repositories/ProjectGroup/RepoName.git"

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/subgit.service

systemctl enable subgit.service

将 ProjectGroup 和 RepoName 替换为您正在运行的任何 subgit setup repo 使用的值,这将创建一个服务文件并将其添加到系统启动中。

我是unix 系统新手,所以如果您对上述内容有任何更改或建议,请随时提出/添加/更改!也感谢上面提供的重要信息。

于 2019-02-08T22:38:30.540 回答