小编kon*_*rad的帖子

如何以干净的方式分叉现有的Meteorite包?

我正在尝试找出在项目中在Atmosphere上分叉现有包的最佳/最干净的方法.我遇到过一些现有软件包需要进行一些修改的情况,我被迫分叉了.

据我所知,存在以下选项.不幸的是,所有这些都有自己的问题,我还没有找到完美的解决方案.我将以meteor-router一个例子为例:

1.只需将包文件复制到packages文件夹即可

脚步:

  • 去掉 packages/router/.git/
  • 编辑packages/.gitignore并删除"路由器"行
  • 从你的删除路由器 smart.json
  • 添加packages/router到项目存储库并提交
  • 现在进行更改(这样你的初始提交是一个干净的版本,你可以自己解决你已经改变的)

好处:

  • 易于实现和理解
  • 您所依赖的所有代码都可以在项目存储库中找到

缺点:

  • 你丢失了所有原始存储库的历史记录
  • 很难更新到更新的版本
  • 很难将您的更改贡献回原始项目

除了最简单的包装之外,甚至不要考虑这个!

2.在github上叉,然后......

要在github上分叉包,您可以检查您的smart.lock文件以查看正在使用的存储库.转到该存储库的github页面并进行分叉.

接下来,您有三个选择:

2A.将它添加为git子模块

有关git子模块的更多信息:http://git-scm.com/book/en/Git-Tools-Submodules

脚步:

  • 请参阅上面的链接,了解如何初始化/创建/更新子模块
  • 从您的包中取出包裹 smart.json

好处:

  • 子模块版本连接到您的项目
  • 立即获取更改

缺点:

  • 所有开发人员都需要git submodule init第一次运行并update进行更新
  • 编辑结帐时,您必须了解子模块的问题
  • 阅读有关子模块的其他问题

2B.编辑项目smart.json以使用您的版本

脚步:

  • 在你的smart.json,找到"router": {}并添加"git": "https://github.com/USER/meteor-router.git"内部空{}.
  • (可选)添加"branch""tag".

好处:

  • 您仍然可以使用Meteorite来管理外部包
  • 将自动为其他开发人员和部署环境工作

缺点:

  • package文件夹中的代码不可编辑,因为它不是git存储库
  • 每次运行时,Meteorite都不会自动更新到最新版本

(建议的陨石改进:允许以可编辑的形式安装包,比如Python的pip允许使用'-e'参数)

2C.在项目外部克隆并添加 …

meteor meteorite

19
推荐指数
3
解决办法
2605
查看次数

具有自定义CNAME安全性的Github页面

Github允许您在自己的域名上托管静态页面.此过程描述如下:https://help.github.com/articles/setting-up-a-custom-domain-with-pages

它提到您必须在存储库中创建一个名为CNAME的文件,以确保您的域映射到此存储库.

如果其他人在其CNAME文件中使用您的域名创建页面存储库,会发生什么?他们是否能够以这种方式劫持您的域名,或者Github会永久地将此域名与您的存储库相关联?

security cname github github-pages

6
推荐指数
1
解决办法
902
查看次数

Django 1.2 + South 0.7 + django-annoying的AutoOneToOneField导致TypeError:'LegacyConnection'对象不可迭代

我正在使用Django 1.2 trunk和South 0.7以及从django-annoying复制的AutoOneToOneField.South抱怨该字段没有定义规则,新版本的South不再具有自动字段类型解析器.所以我阅读了South文档并编写了以下定义(基本上是OneToOneField规则的精确副本):

rules = [
  (
    (AutoOneToOneField),
    [],
    {
        "to": ["rel.to", {}],
        "to_field": ["rel.field_name", {"default_attr": "rel.to._meta.pk.name"}],
        "related_name": ["rel.related_name", {"default": None}],
        "db_index": ["db_index", {"default": True}],
    },
  )
]
from south.modelsinspector import add_introspection_rules
add_introspection_rules(rules, ["^myapp"]) 
Run Code Online (Sandbox Code Playgroud)

现在,当我进行模式移植时,South会引发以下错误.

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "django/core/management/base.py", line 223, in execute
    output = self.handle(*args, **options) …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-south

4
推荐指数
1
解决办法
1234
查看次数

WebStorm 中带有 JSDoc 的选项参数的属性:“未解析的变量”

我有一个带有 jsdoc 注释的函数,它在我的代码中类似于以下内容:

/**
 * Foo function
 * @param {Object} [options]
 * @param {String} [options.foo]
 */
var foo = function (options) {
    if (!options) options = {};
    var foo = options.foo || 'foo';
    // ...
};
Run Code Online (Sandbox Code Playgroud)

我的 IDE WebStorm 标记options.foo为“未解析的变量”。如果我删除 jsdoc 注释,警告就会消失。如何以 WebStorm 获取提示且不再显示此警告的方式记录此函数?

截屏

我尝试过的事情:

  • 消除 @param {String} [options.foo]
  • @param {?String} [options.foo]
  • @param {String} options.foo
  • if (!options) options = {foo: 'bar'};
  • 最后两个合并了。

这是一个错误还是我错过了什么?WebStorm 似乎确实理解options.fooparam 定义,因为if (!options) options = {foo: 42};会发出警告,指出分配的类型不是字符串。

我正在使用 WebStorm 7.0。

javascript intellij-idea jsdoc webstorm

4
推荐指数
1
解决办法
2408
查看次数