【问题标题】:.gitignore for PhoneGap/Cordova 3.0 projects - what should I commit?PhoneGap/Cordova 3.0 项目的 .gitignore - 我应该提交什么?
【发布时间】:2013-07-28 11:39:08
【问题描述】:

我刚刚尝试创建一个新的 phonegap 3.0 项目... 注意:我是 phonegap 的新手。 无论如何,我看到项目文件夹包含:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

在尝试过phonegap local run android 之后,我在platforms/android 中看到了很多二进制/生成的文件。 这让我想知道,我应该将这个文件夹结构的哪些部分添加到我的 git 存储库中。 通常,我认为提交二进制文件是非常糟糕的做法。 因此,我通常会在.gitignore 中添加bin/、obj/、*.o、*.pyc 等模式,以避免使用只会造成合并冲突的东西污染我的 git 存储库。

当然,www 应该添加到 git 中,但是项目的其他部分呢?它们的源代码产品有多大,项目配置有多大?

你是做什么的?当然,我是新手,所以我几乎不明白这里有什么意义......

【问题讨论】:

  • 我不了解PhoneGap/Cordova,但如果有疑问,请提交所有内容。当您知道某些东西是多余的时,您可以随时将其删除:)

标签: git cordova cordova-3


【解决方案1】:

扩展@Jake Moshenko 答案:

我喜欢省略platforms 目录的想法。事实上,我可以同时排除 plugins 和 platforms 目录。 .gitignore 的一个很好的起点:

platforms/
plugins/

问题在于,必须先初始化 repo 的干净副本,然后才能实际使用它。创建一个初始化脚本可能是有意义的,例如:

#!/bin/bash
textReset=$(tput sgr0)
textGreen=$(tput setaf 2)
message_info () {
  echo "${textGreen}[my-app]${textReset} $1"
}

message_info "Creating necessary directories..."
mkdir plugins
mkdir platforms

message_info "Adding platforms..."
# If using cordova, change to: cordova platform add android
phonegap build android
phonegap build ios

message_info "Adding plugins..."
# If using cordova, change to: cordova plugin add
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

对这种方法的一个警告是,在 phonegap/cordova 支持的内容(即屏幕方向支持)之外自定义平台特定的应用程序代码/配置变得更具挑战性。

更新:Bash Gist

这个gist 包含一个更完整的脚本,用于处理不提交plugins 和platforms 目录的项目。它提供了一种将图标和闪屏图像从 www 复制到平台目录(适用于 iOS 和 Android)、安装插件以及处理应添加到版本控制的平台特定文件的机制。

更新:Grunt Gist

这是另一个gist,它是上述 bash 脚本的 Grunt 端口。 (感谢@obie 建议咕噜)。

【讨论】:

  • 我将如何处理添加定制插件/本机代码或更改 AndroidManifest.xml 以适应使用这种方法的插件开发?还有其他地方可以添加 AndroidManifest.xml 更改吗?
  • 查看链接的要点,specifically here。它覆盖/添加来自platform-merges 目录的任何文件。例如,您可以提交platform-merges/android/AndroidManifest.xml。这种方法适用于简单项目,但可能会使大型项目复杂化。
  • 感谢您的帮助 :) 我最终使用 grunt 来做同样的事情(使用 github.com/gruntjs/grunt-contrib-copy)
  • 您可以通过在每个文件夹中添加一个 .gitkeep 文件并将其放入您的 .gitignore 中来避免创建插件和平台文件夹的步骤:platforms/* !platforms/.gitkeep plugins/* !plugins /.gitkeep
  • @aharris88 好点,但我相信我避免这样做是为了更容易清理项目。即rm -rf platforms plugins.
【解决方案2】:

答案取决于您正在开发 phongap 应用程序的平台,以及您是否遵循标准目录结构。

如果你的项目目录结构是标准的,那么你可以从这个gitignore开始,根据自己的需要进行修改。

根据经验,您必须排除所有生成的文件,例如 bin/ 和 gen/ 目录。 如果您正在开发应用的 Android 版本,您也应该排除构建文件,例如 *.apk。

android 子目录中的所有生成文件也应排除:

Android/bin/
Android/gen/
Android/assets/

【讨论】:

【解决方案3】:

所以我只是通过反复试验才弄清楚这一点。如果您使用 phonegap 本地或远程构建,则可以省略 platforms 目录,因为它是动态生成的。所有其他文件夹,包括隐藏文件夹 .cordova 都是必需的。

【讨论】:

  • 您好,如果我使用一些第三方 jar 文件或 Objective-c 源文​​件来自定义 android 或 ios 构建,例如 Parse Notification 集成,该怎么办。肯定需要写一些java代码,那么如何管理git仓库呢? phonegap local build android 会覆盖我的自定义文件吗?
  • 仅供参考,看起来PhoneGap Build 将在没有.cordova 文件夹的情况下构建 - 你为什么说它是必需的@Jake Moshenko?
  • 这个建议是完全错误的。您不应该省略平台目录,因为如果您做任何不平凡的事情,您最终将需要添加一些特定于平台的代码和插件。您还经常需要操作 android manifest 和 ios plist。
  • 我想说省略平台是一个好的开始。如果存在依赖关系,则应将它们保存在其他地方,并在添加平台后作为构建步骤复制。
  • 我更喜欢这个答案。我只排除平台目录
【解决方案4】:

我只是想在这里留下我在这个问题上的经验以及我们最终采用的方法。

在我们的 phonegap 项目中,我们开始使用 .gitignore 文件提交除文件夹 /platform 之外的所有文件。我们是这样认为的,当开发人员克隆存储库时,剩下要做的唯一操作就是执行:

phonegap/cordova 添加平台

但事实并非如此。添加平台后,我们尝试编译,出现错误,并且该应用未安装在设备中。

查看日志,我们发现此错误是由插件引起的。因此,我们决定重新安装我们在项目中使用的所有插件,让应用程序正常运行。

所以我的建议是在存储库中保存所有内容,而不是文件夹平台和插件。创建一个文件 README 并将其上传到存储库,其中包含项目中使用的插件列表。

这样,当开发人员克隆存储库时,他/她必须:

1.- 添加平台:phonegap/cordova 添加平台“平台”

2.- 添加插件:phonegap/cordova plugin add "plugin"

希望这会有所帮助!

问候。

【讨论】:

    【解决方案5】:

    这些东西很多都是旧的,并不真正适用于最新版本的 Apache Cordova。我正在使用 Apache Cordova 5.1.1,这个 .gitignore 允许我仍然使用自定义图标等进行自定义,同时阻止我们不需要为 Android 和 IOS 版本的所有内容。是的 .gradle 被使用所以不要删除它!

    www/
    .gradle/
    build/
    .tmp/
    .temp/
    coverage/
    *.log
    node_modules/
    bower_components/
    

    【讨论】:

    • 为什么要在其中包含www/ 文件夹?在我的应用程序中,这实际上是 Web 应用程序生命中最有用的东西。
    • @vindia 我想我的列表可以作为一个模板让某人开始。我认为所有的潮人都将 www/ 文件夹用作其自动构建过程的可变输出。我的错!
    • 我排除了 www/ 因为自定义构建脚本生成的内容。你真的不希望那里有源文件。
    【解决方案6】:

    虽然这有点个人喜好,但我还是选择了这个(仅适用于 android 项目)。删除大部分内容,但保留自定义内容

    ToonPlane/platforms/android/*
    !ToonPlane/platforms/android/AndroidManifest.xml
    ToonPlane/plugins/*
    !ToonPlane/plugins/android.json
    !ToonPlane/plugins/fetch.json
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多