我正在使用一种桌面软件,它可以对大量文件执行相当复杂的工作,并且将它与Dropbox打开的文件一起使用会导致严重的数据丢失问题。 (因为在软件运行时Dropbox同步)文件(一些文本,一些二进制文件)非常重要,所以我想尽可能地保护它们免受损坏,我需要使用来自多台计算机的文件并希望能够如果它们已经损坏,请回到历史记录中,因此使用git似乎非常适合这种情况。但我对git本身很新。
注意:任何给定的用户只会处理自己的文件,因此不存在多个用户推送到单个存储库的情况。每个用户都可以在他们自己的Dropbox实例中跟踪他们自己的文件。整个要点是让每个用户都具有这种独特的功能,因此他们的文件基本上都是通过git和Dropbox进行备份和版本控制的。
在阅读了一下之后(特别是the top two answers here和this great discussion以及this article on bare vs non-bare repos),似乎有一些不同的方法有很多赞成和讨论,我想知道< strong>在特定的单用户情况下,哪种方法最好?
基本上我看到的选项是将Dropbox用作单用户git“服务器”,让它拥有一个我每次都在本地克隆的裸仓库,或者没有隐喻服务器,只使用Dropbox作为文件服务器我每次都复制(完整)的非裸git repo。
选项1:Dropbox中的裸仓,脚本将其克隆到本地工作目录: c:\dropbox\master.git
是一个裸仓库,脚本执行git clone c:\dropbox\master.git c:\working
,运行针对c:\working
中签出文件的软件,然后执行git add
和git commit
以及git push origin master
并删除c:\working
然后完成。
选项2:Dropbox中的非裸仓库,脚本将复制到本地工作目录:将整个c:\dropbox\master
目录复制到{{1它针对c:\working
中的文件运行软件,然后执行c:\working
和git add
,然后使用git commit
的内容覆盖c:\dropbox\master
并删除{ {1}}及其完成。
最终的powershell脚本还会在它执行任何操作之前关闭Dropbox服务,并在提交(选项1)或复制(选项2)回到Dropbox中的主服务器后重新启动它。实际上这部分很简单,并且保证Dropbox在处理本地仓库时不会更改任何文件。由于它将是一个单用户进程,我(或任何人)可以等待几分钟让Dropbox在首次启动时完成同步。
选项1似乎更“git-ish”,但考虑到单用户场景选项2可能稍微简单一点(只有1个回复处理而不是2)但我不确定是否有任何“陷阱” “我在这里失踪了。
感谢任何提示/想法/等。
答案 0 :(得分:0)
选项3:普通(非裸)Git Repo Dropbox:比选项1和2更容易,因为您不必担心将事物复制到不同的地方。只需像普通的本地git存储库一样使用它,除了它自动同步到云。
我个人使用选项3. Dropbox旨在将您的文件无缝同步到云,而它们就像您正在使用的计算机上的普通文件一样。这样做的风险很小。只需确保在停止工作时同步更改。 (在离线时不要在一台计算机上进行更改,然后在第一次更改同步之前在另一台计算机上进行更改。)如果有任何事情以某种方式损坏,Dropbox还是内置了回滚。
提到的解决方案都不可怕 - 任何方法都可以。但我认为没有理由让它像选项1和&amp; 2。