超级sdist:处理从大型回购上传到Hackage的操作

[分布,麻省理工学院,程序][建议标签]

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

  • 没有候选人
版本[RSS(RSS)] 0.1,0.2,0.2.0.1,0.2.0.2,0.2.0.3,0.2.0.4,0.2.0.5,0.2.0.6,0.2.0.7,0.2.0.8,0.2.0.9,0.2.10,0.2.10.1,0.2.10.2,0.2.10.3,0.2.10.4,0.3.0,0.3.0.2,0.3.0.3,0.3.0.4,0.3.0.5,0.3.0.6,0.3.1,0.3.2,0.3.3,0.3.3.1,0.3.3.2,0.4.0.0,0.4.0.1,0.4.1.0,0.4.2.0,0.4.2.1,0.4.3.0,0.4.3.1
更改日志 更改日志.md
依赖关系 伊森,基础(>=4 && <5),字节删除,optparse示例,食品贮藏室(>=0.6),路径,路径-io,里约,里奥芬,山药[细节]
许可证 麻省理工学院
作者 迈克尔·斯诺曼
维护人员 michael@snoyman.com
类别 分发
主页 https://github.com/snoyberg/mega-sdist#自述文件
Bug跟踪器 https://github.com/snoyberg/mega-sdist/issues
源回购 头部:git克隆https://github.com/snoyberg/mega-sdist网站
已上传 通过迈克尔·斯诺曼2024-03-31T04:30:41分
分配 LTSHaskell公司:0.4.3.1,镍氧化物半导体:0.4.3.1
反向依赖关系 1直接,0间接[细节]
可执行程序 超级扩音器
下载 总计20538人(过去30天内有38人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 文档不可用[生成日志]
上次成功报告时间:2024-03-31[所有1个报告]

mega-sdist-0.4.3.1自述文件

[返回包描述]

超级sdist

这是一个实用程序,用于解决维护中的特定需求Haskell“mega-repos”或包含多个Cabal的Git存储库项目。其目的是简化决定需要发布包并适当标记这些发布。

它提供以下功能:

  • 检测本地代码何时与Hackage上的内容发生更改
    • 注意,由于Hackage的修订,有时这种逻辑并不正确很 完美
  • 检测何时需要更新版本号
  • 转储你的软件包的黑客版本和本地版本

要安装它……好吧,听我说。这个工具是为人们准备的编写Haskell包。很可能,你已经知道该怎么做了这个。如果你不知道,这可能不是一个有用的工具你。无论如何,为了安装它,首先安装堆栈然后运行堆栈安装mega-sdist,或者只是烟囱安装在这个里面存储库。

蛋白石化工具

该实用程序在某些方面非常固执己见,例如:

  • 它只支持一种Git标记名样式:packagename版本。这在非大型回购中可能看起来很奇怪第1.2.3节看起来比食品-1.2.3,但对于mega-repos前者没有意义。它还需要标记签名。
  • 它依赖于Stack来发现所有本地包,并上传至Hackage。

如果你同意这些观点,请继续阅读以了解用法。

我有什么改变吗?

比方说我正在做无叶单回购(已选择以相对较小的回购为例)。我合并了一些公关最近,或者至少我认为我有。但我不记得是哪一个回购中受此影响的个别套餐。而不是看在提交历史上,我会像一些穴居人一样:

$git pull#确保我有所有最新更改$mega-sdist

这个超级扩音器命令将:

  • 为所有本地包构建tarball
  • 检查我在Hackage上的包的最新版本是什么
  • 做一个完整的差异看看有什么变化

在撰写本文时,以下是此回购的输出:

以下来自Hackage的软件包没有更改:单色-单色-0.2.0以下软件包需要版本更新:单色unlift-ref-0.2.1

这意味着:

  • 这个单体无叶我在本地拥有的包的版本为0.2.0.和它与Hackage上的版本完全匹配。无需任何操作。
  • 这个monad unlift参考我在本地拥有的软件包版本为0.2.1。而且它与Hackage上的代码不匹配。因此,如果我想跑步堆栈上传monad-unlift-ref成功,我需要以增加版本号。

我改变了什么?

好吧,再一次,如果我想看看发生了什么变化,我可以跑(再一次,就像洞穴人):

$git diff monad-unlift-ref/0.2.1--monad-unilft-ref

但那太长了!超大尺寸我支持你。只需运行:

$mega-sdist-monad-unlift-ref--get-diff

这将打印上传到的tarball之间的差异黑客和你在本地拥有的东西。除了我开玩笑的评论如果出于某种原因,您没有或者不要相信Git回购中的标签。

另一件事:此差异当前基于原始tarball来自Hackage,忽略阴谋集团文件修订。所以区别可能是与你得到的略有不同堆栈解压缩monad-unlift-ref-0.2.1.但是¯\_(ツ)_/¯这是对你的修改。

的默认行为超级扩音器就是看所有的包裹在您的堆垛山药。目标可以是任何目录。而且超级扩音器将自动查看任何子目录,所以巨型sdist。与相同超级sdist回购的根源。

*假设你所有的包裹在里面你的回购,但只有疯子会做其他事。

准备新版本

好的,现在我继续我的项目,我已经:

  • 对进行了一些更改单体无叶
  • 更新了阴谋集团文件的版本号
    • 当然,我还更新了更改日志.md,我不是怪物

从回购的根开始,我运行:

$mega-sdist-monad-unlift

或者,等效地,从内部单体无叶我运行的子目录:

$mega-sdist。

不管怎样,我都会得到:

本地存在以下新包:单线-0.2.1无需版本碰撞,很好!

这告诉我我的包有本地更改,版本编号已更新,因此堆栈上传monad-unlift工作。尼奥!现在,你能够就跑吧堆栈上载。。。,但这里我通常做的事。首先,我将回顾我要上传的更改并确保没有意外:

$mega-sdist--get-diffs。本地存在以下新包:单线-0.2.1diff-r旧/monad-unlift-0.20/ChangeLog.md新/monad-unlift-0.21/ChangeLog.md0a1,4> ## 0.2.1>>*愚蠢的改变>diff-r旧/monad-unlft-0.2.0/Control/monad/Trans/unlift.hs新/monad-nift-0.2.1/Control/monad/Thans/unlift.hs51年52月54日>>--我只是需要一些空间>diff-r旧/monad-unlift-0.2.0/monad-nlift.cabal新/monad-Unift-0.2.1/monadunlift.cab2平方厘米<版本:0.2.0--->版本:0.2.1无需版本碰撞,很好!

好吧,这就是我想要的。发布时间到了。接下来,我将使用超级扩音器标记发布:

$mega-sdist--gittag。

从我回购的根源来看,这会注意到单色-非单色-红色仍然需要版本碰撞,并拒绝继续。但在内部单体无叶目录,它会注意到所有必要的版本颠簸完成,并愉快地标记:

$mega-sdist--gittag。本地存在以下新包:单线-0.2.1无需版本碰撞,很好!原始命令:git tag-s monad-unlift-0.2.1-m“Release:monad-unilft-0.2.1”

突然我发现了一些新的东西:

$ls柏油球/单线-0.2.1.tar.gz

整洁,超级扩音器留下的柏油球我可以上传!为此,我运行:

$stack上传tarball/*

请注意,无论我尝试只上传一个,这都会起作用包,或我的回购中所有更新的包。最后,我需要将新标签推送到Github(或其他地方):

$git推送--标记

事实上,这个上传序列非常常见,我有一个shell别名设置:

$alias上传alias upload='mega-sdist--gittag.&&堆栈上传tarball/*&&git推送--tags'

所以你有了它:方便的小实用程序来帮助管理回购里面有很多包裹。