【问题标题】:Is it mandatory to save *.iml files in Version control?是否必须在版本控制中保存 *.iml 文件?
【发布时间】:2014-10-19 17:30:16
【问题描述】:

我现在已经切换到 Android Studio 并使用源树将我的项目保存在 Git 中。每当我从模块中添加或删除任何库时,它的 .iml 文件也会更改。我是否提交 *.iml 并不重要,因为它们会在其他 Android Studio 中自动生成。但是,here 它说您应该存储 *.iml 。我的问题是,我们真的需要与他人分享我们的 *.iml 吗?如果是,为什么?

【问题讨论】:

  • 是的!!!当你开发 gradle 基础项目时,.iml 文件存储你的项目信息,所以我认为它很好地存储在版本控制上。
  • 恕我直言,只关注来自Haresh's link的2014年的答案。
  • 我不同意 .iml 文件应该提交给源代码管理。它们是完全生成的,IDE 可以根据对 Gradle 文件的更改随意重写它们。这使得它们在 Gradle 文件中变得多余,而且当 Gradle 文件更改时,您还需要签出、维护和签入。
  • 在最新的 Android Studio (1.5.1) 中,当您从头开始创建新的 Android 项目时,Android Studio 会自动创建 .gitignore 文件并在 .gitignore 中添加 *.iml。所以现在在 2016 年,答案将是“不,在版本控制系统中保存 .iml 文件不是强制性的。”
  • 就我个人而言,我发现 Android Studio 不断对 .iml 文件进行细微的重新排列和更改,因此在版本控制中维护它们很麻烦。

标签: android android-studio version-control


【解决方案1】:

一般的最佳做法是:

  • 使项目尽可能与 IDE 无关,
  • 不要提交生成的文件。

所以答案是:最好让 VCS 忽略此类文件。

【讨论】:

  • 我总是得到双重答案! Haresh 的上述评论说“是”,而你说“不”。我要去哪里?我认为这没关系,因为 *.iml 不共享任何用户的项目路径。所以分享起来似乎很好。你能分享一个链接,所有这些都是以其他方式解释的。
  • 我不确定在你调用 maven 的线程中是否考虑到了 - 完全有可能在没有 maven 的情况下拥有 Idea 项目,在这种情况下它确实应该被提交(因为它是唯一的地方项目 conf 的存储位置)。但是,如果您使用 maven,并且只生成 iml,我看不出重点。
【解决方案2】:

是的,.iml 文件适用于版本控制(参见this comment

使项目尽可能与 IDE 无关也是正确的,但是,共享 .iml 文件不会破坏使用另一个 IDE 进行开发的人们的任何事情。对他们来说,它们只是一堆与他们无关的相对较小的文件。

对于同时使用不同 IDE 的团队来说,一个好的做法是将每个 IDE 的项目文件存储在 VCS 中,仅排除包含特定于单个开发人员环境的路径、环境变量等的项目文件。这样,任何使用受支持的 IDE 的人都可以享受适当的共享设置带来的好处,例如:

  • 共享构建配置
  • 共享依赖关系
  • 自动代码质量检查的配置

还有更多用例,具体取决于正在使用的特定 IDE。 编辑:对于 IntelliJ,另请参阅 this FAQ

【讨论】:

    【解决方案3】:

    我同意它们是与代码无关的 IDE 相关文件,不应共享。 但是,那么您应该知道如何重新生成它们。

    您可能会遇到远程仓库不包含这些文件的情况,当您克隆代码并在 IDEA 中打开时,它只会显示一堆错误。为什么? *.iml 文件不会重新生成。

    您必须使用“文件”-“新建”-“版本控制项目”从 IDEA 导入。只有这样才能为您生成文件。

    【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多