有没有办法在 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 回购中,然后以某种方式将这些回购与repo
、git 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为您的项目解决了哪些问题?
我最近参与了一个项目。该项目列在 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 回购中,然后以某种方式将这些回购与repo
、git 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为您的项目解决了哪些问题?