Clojure Clojars中的补丁库
假设我正在使用一个位于Clojars上的leiningen项目中的库。我遇到了一只虫子。我在Github上完成了这个项目,并修复了这个bug。现在怎么办 在我的leiningen项目中使用我的库版本最合适的方式是什么 另外,我来自Ruby世界,所以我显然想到了Bundler…我的流程:Clojure Clojars中的补丁库,clojure,leiningen,clojars,Clojure,Leiningen,Clojars,假设我正在使用一个位于Clojars上的leiningen项目中的库。我遇到了一只虫子。我在Github上完成了这个项目,并修复了这个bug。现在怎么办 在我的leiningen项目中使用我的库版本最合适的方式是什么 另外,我来自Ruby世界,所以我显然想到了Bundler…我的流程: 在github上完成项目 在依赖项的project.clj中,将版本从project-0.1.2-SNAPSHOT更改为project-0.1.2-arthur-SNAPSHOT 修复错误 运行“lein in
- 在github上完成项目
- 在依赖项的project.clj中,将版本从project-0.1.2-SNAPSHOT更改为project-0.1.2-arthur-SNAPSHOT
- 修复错误
- 运行“lein install”将我的fork添加到我的本地repo
- cd到我的项目(使用依赖项的项目)
- 将我的porject.clj更改为依赖于project-0.1.2-arthur-SNAPSHOT
- 测试我的程序
- 向依赖项的维护者提交拉取请求
- 跳到IRC上,与维护人员讨论修复问题,礼貌地询问我的编码风格是否符合他们对项目的设想。(这也有助于加快它们的合并)
- 一旦他们合并了修复程序,就从名称中删除-arthur-并测试他们的快照分支
- 恳求他们释放固定项目,以便您可以删除快照依赖项李>
- 当您等待依赖项合并并释放时,您可以将fork推到您名下的clojars,并使用一个版本字符串将其标识为您的fork(在我的示例中,我使用-arthur-)
Tt很容易应用大量的“风格修复”如果你想做这件事,请尝试与项目维护人员合作,因为他们会长期参与其中,并且会在代码中投入更多的感情。如果你只希望修改后的版本在本地可用,你可以按照Arthur的流程进行“测试我的程序”步骤。如果您正在处理一个应用程序,并将其与依赖项打包以进行部署(比如使用
lein uberjar
),那么这很好。您可能还希望使用Leiningen的签出功能并行处理主项目和修改后的库(记录在--当前2.2.0版本的链接中)
如果您希望修改后的版本可以在公共Maven存储库中访问,那么可以接受的做法是(事实上,对于这个特定的用例是鼓励的,而不是其他)发布一个项目版本,其中包含原始的人工制品id和组idorg.clojars.{your clojars account name}
例如,如果您想在其project.clj
中发布自己版本的projectfoo
(defproject foo“上游版本”…),则在发布之前,您需要将其defproject
表单更改为(defproject org.clojars.kendalb/foo“您的版本”…
。然后您可以依赖[org.clojars.kendallb/foo“您的版本”]
在您的项目中
这样就不会与原始的artefact id或任何其他分叉有任何冲突
至于将您的更改合并到上游,Arthur的过程是完全合理的。我选择这个答案是因为它包含了将补丁一直添加到生产的说明。谢谢!