Clojure Clojars中的补丁库

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

假设我正在使用一个位于Clojars上的leiningen项目中的库。我遇到了一只虫子。我在Github上完成了这个项目,并修复了这个bug。现在怎么办

在我的leiningen项目中使用我的库版本最合适的方式是什么

另外,我来自Ruby世界,所以我显然想到了Bundler…

我的流程:

  • 在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和组id
org.clojars.{your clojars account name}

例如,如果您想在其
project.clj
中发布自己版本的project
foo
(defproject foo“上游版本”…),则在发布之前,您需要将其
defproject
表单更改为
(defproject org.clojars.kendalb/foo“您的版本”…
。然后您可以依赖
[org.clojars.kendallb/foo“您的版本”]
在您的项目中

这样就不会与原始的artefact id或任何其他分叉有任何冲突


至于将您的更改合并到上游,Arthur的过程是完全合理的。

我选择这个答案是因为它包含了将补丁一直添加到生产的说明。谢谢!