I work on a web application that due to underlying database schema changes etc only even compiles and runs for a given 2 week moving window.
Thus if someone started a branch say 1 month ago, works on it one and off, and then merges it back into the mainline it becomes impossible to bisect that code if it has a problem. You either have to:
* Revert the whole merge * Manually eyeball the code to see where the error might be * Brute-force manually bisect it by checking out only the files altered in those commits instead of the commit at a given data. Usually individual files are still compatible with the new code.
But the whole reason this is a problem is because people don't rebase their branches before merging them in, unintentionally causing problems.
So before I write a hook to do this, is there anything that implements a hook that:
* Checks if you're pushing a merge commit * If so, is that merge based off and old version of $MAINBRANCH * Is the base of that branch more than N days old? * If so reject the push