我正在尝试找出在项目中分叉 Atmosphere 上现有包的最佳/最干净的方法。我遇到过一些情况,现有的包需要一些修改,我被迫分叉它。
据我所知,存在以下选项。不幸的是,所有这些都有自己的问题,我还没有找到完美的解决方案。我会用meteor-router
举个例子:
1. 只需将包文件复制到您的包文件夹中
Steps:
- remove
packages/router/.git/
- edit
packages/.gitignore
并删除“路由器”行
- 从您的路由器中删除路由器
smart.json
- add
packages/router
到您的项目存储库并提交
- 现在进行更改(这样您的初始提交是一个干净的版本,您可以自己找出更改的内容)
优点:
- 容易实现和理解
- 您所依赖的所有代码都可以在您的项目存储库中找到
缺点:
- 你会丢失所有原始存储库历史记录
- 很难更新到新版本
- 很难将您的更改贡献回原始项目
除了最简单的包之外,甚至不要考虑这个!
2.在github上fork,然后...
要在 github 上 fork 一个包,你可以检查你的smart.lock
文件以查看正在使用哪个存储库。转到该存储库的 github 页面并分叉它。
接下来,您有三个选择:
2a.将其添加为 git 子模块
有关 git 子模块的更多信息:http://git-scm.com/book/en/Git-Tools-Submodules http://git-scm.com/book/en/Git-Tools-Submodules
Steps:
- 有关如何初始化/创建/更新子模块的信息,请参阅上面的链接
- 从您的设备中取出该软件包
smart.json
优点:
缺点:
- 所有开发者都需要运行
git submodule init
第一次和update
更新
- 编辑结账时必须注意子模块的问题
- 了解子模块的其他问题
2b.编辑您的项目smart.json
使用您的版本
Steps:
- In your
smart.json
, find "router": {}
并添加"git": "https://github.com/USER/meteor-router.git"
里面是空的{}
.
- (可选)添加一个
"branch"
or "tag"
.
优点:
- 您仍然可以使用 Meteorite 来管理您的外部包
- 将自动为其他开发人员和部署环境工作
缺点:
- 包文件夹中的代码不可编辑,因为它不是 git 存储库
- 每次运行 Meteorite 时,它不会自动更新到最新版本
(Meteorite 改进建议:允许以可编辑的形式安装包,就像 Python 的 pip 允许使用“-e”参数一样)
2c.在项目外部克隆并添加"path"
to smart.json
Steps:
- 将包克隆到项目之外的位置
- 与2b类似,添加一个
"path"
给你的smart.json
将 Meteorite 指向您当地的结帐处
优点:
缺点:
- 如果你犯了这个
smart.json
,您很可能会破坏所有其他开发/部署环境......
您使用哪种方法?您如何解决该方法的缺点?
我可能错过了这些解决方案的一些问题。
对于 Meteor 1.0,我推荐以下内容:
-
设置本地包文件夹
$ mkdir "$HOME/code/packages"
-
Add the PACKAGE_DIRS
环境变量到你的.bashrc
/.zshrc
file
export PACKAGE_DIRS="$HOME/code/packages"
-
分叉并克隆存储库
$ cd "$HOME/code/packages"
$ git clone <yourGithubFork>
-
从您的文件系统安装软件包
$ meteor add <packagenamespace>:<packagename>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)