我正在构建一个需要项目生态系统的项目(Linux,qemu,uboot等),其中大多数位于git存储库中。我曾经用脚本来管理它们,但是我发现自己实现了用make更好地完成的工作。因此,我决定将脚本迁移到makefile中。
问题是,如果不存在,我希望将项目克隆,如果存在,则希望将其提取。有没有办法做到这一点而又不至于太丢人呢?
我认为这样会起作用。它没有任何作用,因为如果不依赖项目目录中的某些内容,我不确定您只能有条件地运行克隆。
force: ;
proj%: force
@echo [ -d $@ ] || git clone srv:$@
@cd $@ && git pull
如果要列出类似proj1/.git/config
的条目作为入口点先决条件,则可以将克隆作为具有项目目录克隆对象的仅先决先决条件进行拆分。尽管您仍然需要对config prereq施加强制以强制拉动发生。
也许是这样:
proj%:
git clone srv:$@
proj%/.git/config: force | proj%
git pull
我一直在制作一个主要具有PHONY目标并生成此模式的Makefile:
.PHONY all
all: foo-docker
foo:
git clone https://example.org/foo-project.git $@
.PHONY: foo-update
foo-update: foo
@cd foo && git pull
.PHONY: foo-docker
foo-docker: foo-update
@cd foo && docker build