来自Clojars的补丁库

Ken*_*llB 5 clojure leiningen clojars

假设我在leiningen项目中使用了一个库,托管在Clojars上.我遇到了一个错误.我在Github上分叉项目,修复bug.怎么办?

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

PS我来自Ruby世界,所以我显然已经想到了Bundler ......

Art*_*ldt 6

我的过程:

  • 在github上分叉项目
  • 在project.clj中将项目版本从项目-0.1.2-SNAPSHOT更改为project-0.1.2-arthur-SNAPSHOT
  • 修复错误
  • 运行"lein install"将我的fork添加到我的本地仓库
  • cd到我的项目(使用依赖项的那个)
  • 将我的porject.clj更改为依赖于project-0.1.2-arthur-SNAPSHOT
  • 测试我的程序
  • 向依赖的维护者提交拉取请求
  • 跳到IRC并与维护者讨论修复,并礼貌地询问我的编码风格是否符合他们对项目的愿景.(这也有助于加速他们的合并)
  • 一旦他们合并修复程序,从名称中删除-arthur-并测试他们的SNAPSHOT分支
  • 请求并释放他们以释放固定项目,以便您可以删除SNAPSHOT依赖项.
  • 当你在等待依赖项合并和释放时,你可以将你的fork推到你名下的 clojars,并使用一个版本字符串将它标识为你的fork(在我的例子中,我使用-arthur-.

当你只是在那里挖掘修复bug时,Tt很容易将大量的"样式修复"应用到项目中.如果你想这样做,请尝试使用项目维护者,因为他们长期在其中,并在代码中投入更多情感.


Mic*_*zyk 6

如果您只希望在本地提供修改后的版本,则可以按照Arthur的流程进行"测试我的程序"步骤.如果您正在处理一个应用程序,并将其与其依赖项打包在一起(lein uberjar比方说),那么这很好.您可能还希望使用Leiningen的checkout功能来并行处理您的主项目和修改后的库(Leiningen的教程中记录 - 链接到当前2.2.0版本的版本).

如果您希望您的修改版本可以在公共Maven存储库中访问,那么接受的事情(实际上,鼓励这个特定用例而不是其他用户)是使用原始artefact id和组ID发布项目版本的org.clojars.{your-clojars-account-name}.

例如,如果你想释放自己的项目的版本foo(defproject foo "upstream-version" ...)在它project.clj,你会改变它的defproject形式(defproject org.clojars.kendallb/foo "your-version" ...)发布之前.然后你可以依赖[org.clojars.kendallb/foo "your-version"]你的项目.

这样就不会与原始的artefact id或任何其他的叉子发生任何冲突.

至于让您的变更合并到上游,Arthur的流程非常合理.