Version control 我应该签入*.mo文件吗?

Version control 我应该签入*.mo文件吗?,version-control,internationalization,translation,project-structure,Version Control,Internationalization,Translation,Project Structure,我是否应该将*.mo翻译文件签入我的版本控制系统 这是一个一般性问题。但特别是我正在使用git存储库处理Django项目。一般的答案是: 如果您确实需要这些文件来编译或部署您的组件(从VCS查询的一组文件),那么是的,它们应该存储在其中(此处:Git)。 对于其他类型的文件也是如此(例如) 特别是: django-admin.py compilemessages utility. 此工具运行所有可用的.po文件并创建.mo文件,这些文件是为gettext使用而优化的二进制文件 意思是: 您应

我是否应该将*.mo翻译文件签入我的版本控制系统

这是一个一般性问题。但特别是我正在使用git存储库处理Django项目。

一般的答案是:

如果您确实需要这些文件来编译或部署您的组件(从VCS查询的一组文件),那么是的,它们应该存储在其中(此处:Git)。
对于其他类型的文件也是如此(例如)

特别是:

django-admin.py compilemessages utility.
此工具运行所有可用的.po文件并创建.mo文件,这些文件是为gettext使用而优化的二进制文件

意思是:

  • 您应该能够在每次需要它们时重建它们(实际上保证它们与.po couterparts同步)
  • Git不太适合二进制存储,这将避免每次更改都存储完整版本
因此,具体的答案并不那么明确:

  • 如果您的po文件是稳定的,不会太频繁地演变,那么您可以最终存储.mo文件
  • 您应该绝对地存储一个大的自述文件,解释如何从po文件生成mo
一般的答案是不要在版本控制中存储生成的内容

如果tarball需要稀有的工具,或者甚至有单独的存储库,或者只使用那些生成的文件(比如git.git存储库中的“html”和“man”分支)断开连接的分支,那么您可以将其包含在tarball中。

对于所问的问题,这是非常简洁的

但有人可能会问:

那么我应该把这些文件存储在哪里呢?我应该在每次部署代码时生成它们吗


为此。。。视情况而定。您可以在tarball中部署它(正如Jakub所建议的那样),或者更好地创建pip或系统包(RPM用于fedora,DEB用于debian,等等)。

“如果您确实需要这些文件来编译或部署”->这意味着您还应该提交您的库和所有依赖项。“这是一个大诺诺。”拉文温(差不多12年后)。我同意:最好的做法是声明其依赖项,而不是包含它们,并确保第三方工具将从外部引用获取这些依赖项(如
maven/mvn
does from
pom.xml
和Nexus.org)