我正在构建一个项目,需要一个项目生态系统(linux,qemu,uboot等),其中大部分都在git存储库中。我曾经用脚本来管理它们,但我发现自己实现的东西最好用make完成。所以我决定将我的脚本迁移到makefile。
问题是我想要克隆的项目如果不存在则拉出(如果存在的话)。有没有办法做到这一点,而不是过多地重复自己?
答案 0 :(得分:3)
我认为这样的事情会起作用。它没有make工作,因为不依赖于项目目录中的某些东西,我不确定你是否只能有条件地运行克隆。
force: ;
proj%: force
@echo [ -d $@ ] || git clone srv:$@
@cd $@ && git pull
如果您希望列出类似proj1/.git/config
之类的内容作为入口点先决条件,则可以将克隆拆分为仅具有订单的先决条件,以及那些具有项目目录克隆的克隆。虽然你仍然需要配置先决条件上的力来强制拉动。
或许这样的事情:
proj%:
git clone srv:$@
proj%/.git/config: force | proj%
git pull
答案 1 :(得分:0)
我一直在研究一个主要具有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