我正在尝试一些Linux配置,我想跟踪我的更改?当然我不想把我的整个操作系统置于版本控制之下?
有没有办法(使用git,mercurial或任何VCS)跟踪更改而不存储整个操作系统?
这就是我的想象:
可能?不可能?变通?
编辑:我关心的只是最小化存储库的大小并且只有一个包含我的更改的存储库。将我的存储库中的所有文件与我无关。例如,如果我推送到github,我只希望它只包含已更改的文件。
答案 0 :(得分:4)
看看etckeeper,它可能会完成这项工作。
答案 1 :(得分:1)
你想要的是git update-index --info-only
或... --index-info
,来自手册页:“ - info-only用于注册文件而不将它们放在对象数据库中。这对于仅限状态非常有用库。“ --index-info
是其工业规模的表亲。
对要跟踪的文件执行此操作,write-tree
将索引结构写入对象db,commit-tree
表示,update-ref
更新分支。
要获取对象名称,请使用git hash-object
filename
。
答案 2 :(得分:0)
这是我们做的......
su -
cd /etc
echo "*.cache" > .gitignore
git init
chmod 700 .git
cd /etc; git add . && git add -u && git commit -m "Daily Commit"
然后设置crontab:
su -
crontab -e
# Put the following in:
0 3 * * * cd /etc; git add . && git add -u && git commit -m "Daily Commit"
现在,您将每晚提交/ etc
中的所有更改如果你想在一个仓库中追踪超过/ etc,那么你可以在你的文件系统的根目录下执行它,除了在/.gitignore中添加正确的忽略路径。我不清楚在git中使用git的影响,所以在这种情况下你可能需要格外小心。
答案 3 :(得分:0)
我知道这个问题很老,但我认为这可能对某人有所帮助。受@ Jonathon对How to record concrete modification of specific files问题的评论的启发,我创建了一个shell脚本,使您能够监视对特定文件所做的所有更改,同时保留所有更改历史记录。该脚本取决于正在安装的inotifywait和git包。
您可以在此处找到该脚本 https://github.com/hisham-hassan/linux-file-monitor
Usage: file-monitor.sh [-f|--file] <absolute-file-path> [-m|--monitor|-h|--history]
file-monitor.sh --help
-f,--file <absolute-file-path> Adding a file to the monitored files List. The <absolute-file-path>
is the absolute file path of the file we need to action.
PLEASE NOTE: Relative file path could cause issues in the script,
please make sure to use the abolute path of the file. also try to
avoid sym links, as it has not been tested.
example: file-monitor.sh -f /absolute/path/to/file/test.txt -m
-m, --monitor Monitoring all the changes on the file. the monitoring will keep
happening as long as the script is running; you may need to run it
in the background.
example: file-monitor.sh -f /absolute/path/to/file/test.txt -m
-h, --history showing the full history of the file.
To exit, press "q"
example: file-monitor.sh -f /absolute/path/to/file/test.txt -h
--uninstall uninstalls the script from the bin direcotry,
and removes the monitoring history.
--install Adds the script to the bin directory, and creates
the directories and files needed for monitoring.
--help Prints this help message.