我们的产品类似于游戏,并且在二进制支持文件中非常丰富(~40M - 100M) - 纹理,网格,电影等。Like kai1968,我希望能够同步这些资源,而不仅仅是代码,只需单击一下。
然而,严格地说,这与版本控制不同:我不想让我们的TFS负担这些文件的无关历史。我可以以某种方式上传内容而不保留历史记录到TFS吗?如果我可以选择在特定点(比如标签点)保留历史记录,而不是每次签到都会更好。
更一般地说,您如何管理二进制资产的同步?
(我知道other tools,或许更适合这样的任务,但是现在不能选择与TFS分歧或完全迁移。)
答案 0 :(得分:5)
我们总是在需要时将二进制资产保留在TFS中,并且只处理该选择的副作用(额外的存储,更长的签到因为你不能在二进制文件上进行差异等)。我不相信有一种方法可以选择性地破坏某些文件的历史记录,除了手动。如果您想要手动定期执行此操作,则可以执行以下操作:
您只有最新的副本,但这有副作用 - 您将破坏任何以前的版本,因为尝试检索源历史记录不会返回这些文件的新副本。 TFS将检查与您正在尝试的结帐匹配的副本,并且找不到,它将不会检索这些文件的副本。如果要构建旧版本,则需要更新构建脚本以提取最新的二进制文件以及历史代码,但即使这样,它也不会是真正的历史记录。
第二种选择是仅定期检查它们 - 而不是每次轻微更改。例如,将这些文件保存在安全的地方(带有每日备份的文件共享),然后每周左右检查更改的二进制文件,或者每个标签之前,或者其他任何内容 - 这样,您没有增量历史记录,但是你还有你的标签历史。您甚至可以考虑编写某种自动例程来应用标签,然后首先检查该文件夹中的任何更改,然后应用标签。
请回复你最终做的事 - 我很想知道!
答案 1 :(得分:4)
以下是一些想法:
考虑使用单独的VSTS项目,因此不要在同一项目中混合使用二进制文件和代码。这使得管理更容易(例如,您可以将资产分开,并且通过过滤项目可以更轻松地查询与它们相关的任何工作项)。在不利方面,这意味着需要2次点击才能获得最新信息。
你为什么不想保留历史?源代码控制的重点是保留历史记录,以便您可以返回特定日期的特定构建。否则,您也可以在网络驱动器上使用备份程序(而且您真的不想这样做!)
如果您只担心磁盘空间使用情况,请不要这样做。 100MB很小,硬盘很便宜。我的上一个游戏项目拥有数百GB的资产,我们保留了每次变化的历史超过3年。
资产不会减慢任何速度。如果您签入或获取它们,它们只需要时间来处理,即使您不使用源代码管理,这些活动也是您需要做的。实际上,源代码控制使事情变得更快,因为您只需“一键完成”解决方案。
源代码管理的许多其他好处对资产非常有用,并且远远超过负面影响。