我们的FIRST机器人团队正在使用二进制CAD / CAM文件,并且在git和GitHub中混淆了不可合并的文件。 GitHub supports SVN和SVN allows binary files to be locked,但当我使用命令svn propset svn:needs-lock true ControlsBox.iam
后跟svn ci .
时,我收到以下错误:
svn: E175008: Commit failed (details follow):
svn: E175008: At least one property change failed; repository is unchanged
svn: E160024: Invalid PROPPATCH property
这是间接表明GitHub不支持svn:needs-lock
财产还是我做错了什么?有没有办法让这个工作?
答案 0 :(得分:4)
如前所述,Git不支持文件锁定。但我知道至少有两个分布式系统可以执行:Veracity和Mercurial(如果安装lock extension)。我不确定Veracity是否仍在积极开发中,它看起来不再有一个好的托管网站了。另一方面,Mercurial非常活跃,拥有大量用户,并且支持包括BitBucket在内的许多托管站点,如果你想要一台中央服务器而不需要自己管理它的麻烦。像Git一样,这两个系统也支持启动轻量级服务器以允许用户之间相互推送/拉取而不是使用中央服务器,但是需要存在某种中心位置来存储锁,因为从这一点开始运动就是用那些。可悲的是,主要的托管服务提供商不支持Mercurial的锁定扩展,我知道。
当然,您也可以使用SVN。 谷歌代码和 Sourceforge和其他地方提供免费的SVN托管,但没有像GitHub或甚至BitBucket(我知道)那样好。自托管SVN服务器比分布式工具需要更多设置,但有一些简单的工具可以帮助解决这个问题,例如VisualSVN Server。
答案 1 :(得分:3)
Subversion locking feature that you mention在服务器上实现:
首先,您需要确保将Subversion服务器升级到至少1.2版。早期版本根本不支持锁定。
GitHub supports Subversion clients:
可以从Git和Subversion(SVN)客户端访问GitHub存储库。
在服务器上没有提到Subversion。事实恰恰相反:
GitHub通过HTTPS协议支持Subversion客户端。我们使用Subversion网桥将svn命令传递给GitHub。
无论您如何访问GitHub存储库,它仍然是服务器上的Git存储库。由于Git不支持文件锁定,GitHub不支持文件锁定。
GitHub支持的Subversion功能列表支持这个结论,没有提到锁定(来自同一篇文章):
提交Subversion
请注意,这实际上意味着使用svn
命令提交到GitHub:
在添加了一些功能并修复了一些错误后,您需要将这些更改提交给GitHub。这就像你习惯的Subversion一样。修改您的文件,并使用
svn commit
记录您的更改
在分支之间切换