有没有办法让subversion中的媒体和git中的代码?

时间:2017-01-27 19:02:31

标签: git svn github git-svn

我最近成为了一个项目。该项目在sourceforge.net中列出,并且他们在过去几年中一直在使用其服务。该项目已使用sourceforge.net 17年,它有很多图形资产,音乐等。现在他们想将项目迁移到github.com。

现在github.com即使是一个开源项目也不是很好的提供免费空间。它的空闲空间为1 GB,对于图像,音频,视频等并不是很好(只有例外情况是使用git-lfs,它有其自身的局限性)。 Git本身会成为回购的copy。在.git内部,它不能帮助它的情况,尤其是大媒体文件。所以即使是一个500 MB的回购。将轻松超过1 GB。

我见过一些回购。代码部分保存在github.com或任何git存储库中,而图像/动画等保存在sourceforge或某个有svn的地方。

如何去做这件事。我猜这样做的方法是使用git-svn,但应该如何处理呢?

我确实读过Is it possible to have a Subversion repository as a Git submodule?,但那已经很久了,所以希望在过渡时期出现一些新的东西

3 个答案:

答案 0 :(得分:1)

GIT等版本控制系统是基于文本的内容而不是二进制文件。技术上可以在它们上存储二进制文件,但它远未被优化。更糟糕的是生成的文件,例如程序二进制文件,因为它们很可能在每次提交之前生成。

通常,单独分配资产要好得多。现在有很多解决方案:云,网络服务器等。

答案 1 :(得分:1)

  

Git本身制作了回购的副本。里面.git没有帮助   它的情况尤其是大媒体文件。所以即使是500 MB   回购。将轻松超过1 GB。

正如@Tom已经告诉过的,git不适用于二进制文件。 Git旨在跟踪文本内容。相比之下,SVN普遍支持文本和二进制数据。例如,

  • Subversion存储库不关心文件是否是人类可读的 - 它的diff引擎是二进制delta算法,而不是上下文diff引擎。如果您更改一个千兆字节的二进制文件中的一个字节,Subversion只需要为您的文件的新版本存储该一个字节(以及元数据)。

  • Subversion supports sparse working copies(浅层WCs)因此您不必将克隆保留在整个存储库中,只需抓取您当前正在使用的子树。

  • Subversion完全支持lock-modify-unlock版本控制模型。这意味着您可以选择哪些文件是不可合并的,并强制或要求用户在编辑之前锁定它们以避免二进制冲突。

  

我见过一些回购。代码部分保存在github.com或   任何git存储库,而图像/动画等保持在   sourceforge或某个有svn的地方。

     

如何去做这件事。我在猜测的方法   那是使用git-svn但应该如何处理呢?

我猜你见过的其中一个项目是SuperTuxKart。该项目的代码由git in multiple repositories on GitHub控制,其媒体资产由Subversion on SourceForge控制。

似乎两个系统都是在没有git-svn或类似工具的情况下独立使用的。程序员使用git,艺术家使用SVN。因此,如果将所有数据都放在单个存储库中并不重要,那么可以尝试这种方法。请参阅https://supertuxkart.net/Source_controlhttps://supertuxkart.net/Media_Repo页。

说了这一切,我想再次指出,你不清楚为什么要转用git以及你想用这种方式解决的问题:

  

该项目已经使用sourceforge.net 17年了,它有很多   图形资产,音乐等现在他们想要迁移项目   到github.com。

据我了解,SVN已被该项目使用了17年,现在您想将代码迁移到Git。但你考虑过其他DVCS吗?

git 为您的项目解决了哪些问题?

答案 2 :(得分:0)

SourceForge并不意味着SVN。 SourceForge提供了不同的VCS,其中包括Git。所以,简单地将您想要的东西放在SF的Git仓库中,以及GH希望在GH的Git仓库中获得的东西,然后以某种方式将这些仓库与repo,{{1或者你喜欢的任何机制。