对于我开发的最后一个python项目,我使用 git 作为版本控制系统。现在是开发周期的时间,我应该开始向beta测试人员发送软件包(在我的例子中,他们将是.deb软件包)。
为了构建我的包,我需要一些额外的文件(copyright
,icon.xpm
。setup.py
,setup.cfg
,stdeb.cfg
等。 。)但是我想将它们与程序源分开,因为源可能用于为其他平台准备包,并且将这些特定于debian的文件延迟是没有意义的周围。
我的问题:是否有标准的方式/最佳做法?在我的谷歌漫游中,我在here on SO上偶然发现了几次(包括git-buildpackage)套件,但我不确定这是我正在寻找的,因为似乎包装商从上游存储库下载tar.gz。
我认为实现我想要的一种可能的方法是在git存储库上有一个分支,我保存我的包装文件,但是这个分支也应该能够“看到”主文件上的文件没有我的分支,每次都手动将主服务器合并到包装分支。但是:
git symbolic-ref
魔法,但我不知道如何做我想象的事情任何帮助表示感谢,提前感谢您的时间!
答案 0 :(得分:4)
为什么要将这些内容保留在源代码管理之外?它们是生成最终构建输出的输入的一部分!您肯定不想忘记它们,并且您可能希望在继续开发应用程序时跟踪它们随时间的变化。
您最想要做的是为所有这些特定于发布的文件创建一个子目录,比如./debian
或./packaging/debian
并在那里提交它们;你可以有一个makefile或者一些这样的东西,当你在那个目录中运行它时,复制它们需要的所有文件来创建包,你就会很好!
答案 1 :(得分:2)
最后我选择了一个带有makefile的分支,这样我的包装程序现在看起来像:
git checkout debian-packaging
make get-source
make deb
<copy-my-package-out-of-the-way-here>
make reset
如果你有兴趣,你可以找到完整的makefile here(免责声明:这是我的第一个makefile,所以它很可能不是你见过的最好的makefile)。
简而言之,“技巧”的核心在get-source
指令中,它是使用 git archive
命令,它接受名称作为参数的分支,并使用该分支的源生成tarball。这是片段:
# Fetch the source code from desired branch
get-source:
git archive $(SOURCE_BRANCH) -o $(SOURCE_BRANCH).tar
tar xf $(SOURCE_BRANCH).tar
rm $(SOURCE_BRANCH).tar
@echo "The source code has been fetched."
希望这也有助于其他人!
答案 2 :(得分:0)
您可以将额外的文件放在一个单独的仓库中(以便它们也被版本化)并使用submodules
在源代码仓库中使用它。