This may seem redundant, however:
git does not track empty directories. So it can happen that a
directory is created as part of `git clone', but is empty in the
revision switched to with `git checkout'.
In this situation, the tree we are going to build ought not to contain
this directory, because that directory will not (in general) be
produced, eg when the revision being switched to becomes master.
We can use git clean to produce a working tree whose contents -
including the presence or absence of empty directories - depends only
on the commit we are trying to check out, and not on the previous
states of the git history or working tree.
For example, if a directory is made empty (ie, deleted, since git does
not distinguish) in xen.git#staging, osstest's clones of
xen.git#master will produce the directory, but `git checkout' of
staging won't delete it. If the xen.git build system mistakenly
depends on this directory, we won't detect this until the deletion
reaches master. This situation actually occurred with xen.git#
598e97f
"tools/python: remove broken xl binding" (fixed in
b261366f).
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>