我最近收到一个问题报告,说我的包的 HSpec 文件从 hackage tarfile 中丢失了,这对我来说似乎很奇怪。
我检查了它,用户是对的:
% curl -O http://hackage.haskell.org/packages/archive/ReadArgs/1.2/ReadArgs-1.2.tar.gz
% tar tzf ReadArgs-1.2.tar.gz
ReadArgs-1.2/
ReadArgs-1.2/LICENSE
ReadArgs-1.2/ReadArgs.cabal
ReadArgs-1.2/ReadArgs.hs
ReadArgs-1.2/ReadArgsEx.hs
ReadArgs-1.2/Setup.hs
但是,在我的 git repos 中运行所有提交时,似乎cabal sdist
总是包含ReadArgsSpec.hs
在包中。
% cabal configure
Resolving dependencies...
Configuring ReadArgs-1.2...
% cabal sdist
Building source dist for ReadArgs-1.2...
Preprocessing library ReadArgs-1.2...
Preprocessing executable 'ReadArgsEx' for ReadArgs-1.2...
Source tarball created: dist/ReadArgs-1.2.tar.gz
% tar tzf dist/ReadArgs-1.2.tar.gz
ReadArgs-1.2/
ReadArgs-1.2/LICENSE
ReadArgs-1.2/ReadArgs.cabal
ReadArgs-1.2/ReadArgs.hs
ReadArgs-1.2/ReadArgsEx.hs
ReadArgs-1.2/ReadArgsSpec.hs
ReadArgs-1.2/Setup.hs
所以现在,我能想到三种可能性:
- 我使用其他东西生成了我上传到 hackage 的 tar 文件
cabal sdist
,而该过程被忽略了ReadArgsSpec.hs
。 - 我在以排除但未能提交更改的方式运行之前更改了我的
ReadArgs.cabal
文件。cabal sdist
ReadArgsSpec.hs
ReadArgsSpec.hs
从包文件中删除了黑客攻击。
我认为 (1) 和 (2) 是可能的,但不太可能,特别是因为我的包的前两个版本似乎有相同的问题,而且我不能认为我每次都执行相同的奇怪行为。
这给我留下了(3),这似乎只是对比。Hackage 会ReadArgsSpec.hs
从我上传的 tar 文件中删除吗?如果是这样,我应该如何更改我的ReadArgs.cabal
文件以确保它被包含在内?