有没有办法在 git 中包含媒体和代码?

Is there a way to have media in subversion and code in git?

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

现在 github.com 提供免费 space 并不是很好,即使它是一个开源项目。它免费提供 1 GB space 并且它不适用于图像、音频、视频等(唯一的例外是使用 repo 的 git-lfs which has its own limitations). Git itself makes a copy。内部 .git '帮助它的情况,尤其是对于大媒体文件。因此,即使是一个 500 MB 的存储库。也很容易超过 1 GB。

我看过一些回购协议。其中代码部分保存在 github.com 或任何 git 存储库中,而 images/animation 等保存在 sourceforge 或具有 svn 的某个地方。

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

我确实读过 Is it possible to have a Subversion repository as a Git submodule? 但那太旧了所以希望在过渡期间出现一些新的东西

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

通常资产分开分配会好很多。现在有很多解决方案:云、网络服务器等

SourceForge 并不意味着 SVN。 SourceForge 提供了不同的 VCS,其中 Git。因此,只需将您在 SF 想要的东西放在 SF 的 Git 回购中,将您想要在 GH 拥有的东西放在 GH 的 Git 回购中,然后以某种方式将这些回购与repogit submodule 或您喜欢的任何机制。

Git itself makes a copy of the repo. inside .git which doesn't help its case especially with big media files. So even a single 500 MB repo. will top 1 GB easily.

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

  • Subversion 存储库不关心文件是否 human-readable — 它的差异引擎是二进制增量算法,而不是上下文差异引擎。如果您更改 multi-gigabyte 二进制文件中的一个字节,Subversion 只需为文件的新版本存储该字节(加上元数据)。

  • Subversion supports sparse working copies (shallow WCs) 这样你就不必保留整个存储库的克隆,只需抓住你正在使用的子树即可。

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

I have seen some repos. where the code part is kept at github.com or any git repository, while the images/animation etc. is kept at sourceforge or some place which has svn.

How to go about doing about doing that. I am guessing the way to do that is using git-svn but how should it be approached ?

我想您看过的项目之一是 SuperTuxKart。项目代码由git in multiple repositories on GitHub and its media assets are controlled by Subversion on SourceForge.

控制

似乎两个系统都是独立使用的,没有git-svn或类似的工具。程序员用git,美工用SVN。因此,如果将所有数据放在一个存储库中对您来说并不重要,您可以尝试这种方法。查看页面 https://supertuxkart.net/Source_control and https://supertuxkart.net/Media_Repo

说了这么多,我想再次说明,不清楚你为什么要切换到git以及你想用这种方式解决什么样的问题:

The project has been using sourceforge.net for 17 years and it has lot of graphical assets, music etc. Now they want to migrate the project to github.com.

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

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