Currently build systems like Ant or Maven cannot correctly handle the following typical Git workflow:
- You do some stuff, run some tests
- You quickly switch the branch to something else (e.g., master -> branch_5x)
- If you then run tests or compile, you get crazy error messages because all the up-to-date checking does not work. To fix you have to run "ant clean" on root folder.
The reason for this behaviour is how switching branches works: "it just replaces your working copy with another verson and different file modification dates (in most cases earlier ones!). This breaks Ant's and Javac'c uptodate checking.
This patch will add some check to common-build (which is done before "resolve" through a dependency of "init" task) to keep track of current branch:
- It copies .git/HEAD into the build folder as "reference point".
- Before compiling (on init), it does a file compare of current HEAD file with the clone in build dir. If it does not yet exists (clean checkout) or if it is identical, it just proceeds
- If the file contents changed, it will trigger "ant clean" on the LuSolr root folder automatically and print message.
The status is passed down to sub-builds using *.uptodate property, so the check is only done once.
Robert an I tried this out in serveral combinations, works fine.