我正在构建一个需要一系列项目(Linux、QEMU、u-boot等)生态系统的项目,其中大多数项目都在git代码库中。我过去使用脚本来管理它们,但发现自己实现的功能最好使用make工具完成。因此,我决定将我的脚本迁移到makefile中。
问题是,如果这些项目不存在,我希望能够克隆它们,如果已存在,则希望拉取更新。有没有一种方法可以不重复地完成这项任务?
问题是,如果这些项目不存在,我希望能够克隆它们,如果已存在,则希望拉取更新。有没有一种方法可以不重复地完成这项任务?
我认为类似这样的东西可以起作用。它不需要做任何工作,因为如果不依赖项目目录中的某些内容,我不确定你只能有条件地运行克隆。
force: ;
proj%: force
@echo [ -d $@ ] || git clone srv:$@
@cd $@ && git pull
proj1/.git/config
这样的入口先决条件,你可以将克隆分为那些具有项目目录的仅顺序先决条件。虽然你仍需要在config的先决条件上使用force来强制拉取发生。proj%:
git clone srv:$@
proj%/.git/config: force | proj%
git pull
我一直在编写一个Makefile,用于使用PHONY目标构建Docker镜像,并想到了以下模式:
.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
$DIR
不存在,我只想运行git clone $GIT_URL $DIR
,如果存在,则运行cd $DIR; git pull
。显然,每个项目都有不同的$GIT_URL
和$DIR
对... 我不知道我是否回答了你的问题... - fakedrake