SHELL = /bin/sh ifneq (,$(wildcard .bundle-env)) include .bundle-env endif ifeq (root,$(shell whoami)) check-root = @true else check-root = $(error this target requires root) endif ifeq (dom0,$(shell hostname)) check-dom0 = @true check-domu = $(error this target must be run in the guest qube) else check-dom0 = $(error this target must be run in dom0) check-domu = @true endif BUNDLEOUT := .bundles/dom0.bundle BUNDLEIN := .bundles/domu.bundle clean-workdir = git init -q -b $* && git diff --quiet && git diff --cached --quiet || (echo 'dirty tree; check git status' && false) create-bundle = git show-ref --verify --quiet refs/remotes/$(1)/$* \ && git bundle create $(BUNDLEOUT) $(1)/$*..$* \ || git bundle create $(BUNDLEOUT) $* .PHONY: pull pull/% pull: pull/$(shell git branch --show-current) pull/%: echo "check dom0" $(check-dom0) echo "clean workdir" $(clean-workdir) echo "creating bundle" qvm-run -p $(GUEST) "cd $(GUEST_REPO) && $(call create-bundle,dom0)" $(BUNDLEIN) git remote add $(GUEST) $(BUNDLEIN) || true git pull $(GUEST) $*:$* qvm-run -p $(GUEST) "cd $(GUEST_REPO) && git update-ref refs/remotes/dom0/$* $*"