我有一个名为 cgit 的 bash 脚本,其作用如下git对于一个特定的 git回购协议(位于/.git
):
#!/bin/bash
cd /;
sudo git $@ > /dev/stdout
我用它来跟踪重要的系统文件:
cgit add /etc/rc.conf
问题是当我尝试添加相对于我所在目录的内容时,例如:
cd /home/user
cgit add .ssh/config
吉特会尝试添加/.ssh/config
到存储库中/.git
。
有什么建议或解决方法吗?
答案1
我会更新您的 cgit 脚本以使用--git-dir
.从手册页:
--git-dir=<path>
Set the path to the repository. This can also be controlled by
setting the GIT_DIR environment variable. It can be an absolute
path or relative path to current working directory.
所以它会变成:
#!/bin/bash
sudo git --git-dir=/.git $@ > /dev/stdout
FTR,我还没试过。
答案2
更好用等等管理员而不是您自己的本土解决方案。 etckeeper 很好地解决了许多问题。它是多个 Linux 发行版中的一个软件包,并且也很容易从源代码构建。
基于 Debian 的系统上一个非常好的功能是它与 apt 结合起来,在安装或更新软件包之前和之后自动提交。这有助于区分您自己所做的更改和软件包更新所做的更改。它还(可选)进行每日自动提交。