我正在考虑通过Syncthing同步一个Git项目,但我认为这是一个坏主意,因为有隐藏文件。你能证实这一点吗?或者Syncthing会正确地做到这一点吗?
nhhxz33t1#
一般来说,你不应该通过任何类型的文件同步工具来同步Git仓库,包括Syncthing或任何类似的工具,如Dropbox或iCloud。这是因为Git以非常特定的顺序写入数据,以保持仓库的完整性,并且在仓库没有完全空闲时进行任何类型的同步都可能损坏它。任何类型的连续文件同步实用程序都会在看到操作发生时进行同步,但它不能也不能保证操作将按照Git执行的确切顺序发生,这使得不可能保留所需的不变量。如果您这样做,存储库可能最终损坏,或者您可能会看到重复文件的问题,删除后重新出现的文件,或其他难以解释的问题。只要仓库完全空闲 *,使用rsync * 是安全的。这意味着没有Git进程正在运行,包括git gc或编辑器或shell调用的任何进程。请注意,如果您这样做,由于Git索引的性质,git status将不得不在下次同步时重新读取所有文件。当然,在任何时候使用git push、git fetch和git bundle传输数据也是安全的。
git gc
git status
git push
git fetch
git bundle
1条答案
按热度按时间nhhxz33t1#
一般来说,你不应该通过任何类型的文件同步工具来同步Git仓库,包括Syncthing或任何类似的工具,如Dropbox或iCloud。这是因为Git以非常特定的顺序写入数据,以保持仓库的完整性,并且在仓库没有完全空闲时进行任何类型的同步都可能损坏它。
任何类型的连续文件同步实用程序都会在看到操作发生时进行同步,但它不能也不能保证操作将按照Git执行的确切顺序发生,这使得不可能保留所需的不变量。
如果您这样做,存储库可能最终损坏,或者您可能会看到重复文件的问题,删除后重新出现的文件,或其他难以解释的问题。
只要仓库完全空闲 *,使用rsync * 是安全的。这意味着没有Git进程正在运行,包括
git gc
或编辑器或shell调用的任何进程。请注意,如果您这样做,由于Git索引的性质,git status
将不得不在下次同步时重新读取所有文件。当然,在任何时候使用
git push
、git fetch
和git bundle
传输数据也是安全的。