Skip to content

Commit

Permalink
Makefile: improve repo creation target, avoid := notation
Browse files Browse the repository at this point in the history
The := notation is problematic here since it causes the statements on the
right hand side to be dereferenced immediately even if the repo or .git
target was not specified.  When the source is checked out from a git clone,
the .gitrev file does not exist, but the '$(shell cat .gitrev)' sequence is
executed every time make is called and it produces an error message.  Also,
the '$(shell mktemp -d tmprepo.XXXXXX)' sequence is  executed every time
make is called, which creates a new unique tmprepo.XXXXXX directory each
time.

So, let's rework this target so that the := notation is avoided, and also
to make it a little more efficient by avoiding an unnecessary checkout of
the repository.

There are two functional changes: 1) the temporary directory will just be
called ".repo_tmp" and it will be overwritten each time 'make repo' is
called, and 2) the checked out branch will keep its default name rather
than adopting a new name 'working'.  The user can create a new branch if
they desire and the original remote branch state is already available in
origin/master.
  • Loading branch information
drafnel committed Aug 24, 2011
1 parent 7cc79d3 commit cc20297
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions Makefile
Expand Up @@ -6,17 +6,14 @@ all: local
local:
${PYTHON} setup.py build_ext --inplace

.git: REV := $(shell cat .gitrev)
.git: TMPDIR := $(shell mktemp -d tmprepo.XXXXXX)
.git:
TMPDIR = .repo_tmp
.git: .gitrev
rm -rf $(TMPDIR)
git clone $(REPO) $(TMPDIR)
cd $(TMPDIR); git checkout -b working $(REV)
mv $(TMPDIR)/.hgtags .
mv $(TMPDIR)/.hgignore .
git clone -n $(REPO) $(TMPDIR)
cd $(TMPDIR) && git reset -q "$(shell cat .gitrev)"
mv $(TMPDIR)/.git .
mv $(TMPDIR)/Doc/s5 Doc/s5
rm -rf $(TMPDIR)
git checkout -- .hgtags .hgignore Doc/s5

repo: .git

Expand Down

0 comments on commit cc20297

Please sign in to comment.