要做到这一点,我正在尝试使用GIT。
我正在尝试开发一个.sh脚本(在linux下)来自动提交git存储库中的所有更改并删除除最后一个之外的所有历史记录修订。存储库必须仅保留最后的提交数据并清除所有以前的历史记录(丢失所有数据)。
例如,我提交3个文件:
提交后,我的.git文件夹大小约为25 MB;
现在我删除了file1和file2。
下次提交后,我的工作副本为12 KB,而我的.git文件夹为25 MB。
我想刷新存储库中的所有数据(丢失数据)以获得尽可能小的.git文件夹。
问题是我需要使用一个单独的非交互式命令行,因为我需要做一个cron脚本。
几个小时浏览论坛我找不到这个问题的解决方案。
真正的问题是:如何设置双向快速文件同步? 要同步的文件夹很大(20 GB,包含数千个文件)。第一次同步会非常慢,没问题,但第二次同步应该更快,不超过30-40秒只比较更改的文件......
感谢您的帮助。
答案 0 :(得分:1)
使用inotify用于linux,或its equivalent on other platforms获取有关文件系统更改的通知,然后使用librsync,libssh或类似内容传输文件。< / p>
根据您的使用情况,您实际上可能会在cron作业中运行rsync。 rsync算法相当聪明,并且在使用时会传输非常少的不必要的crud。如果你正确设置它,它只会查看上次修改时间。
我肯定会建议在尝试组合临时解决方案之前使用aerofs或unison。
答案 1 :(得分:1)
如何设置双向快速文件同步将是osync。 Osync是基于rsync的双向文件同步,并将使用rsync更新算法来节省一些带宽,仅用于传播更改。 请查看http://www.netpower.fr/osync
答案 2 :(得分:1)
我编写的这个Python脚本可能有所帮助。试一试!