FindingOldBranches » History » Version 4
  Chris Cannam, 2012-02-02 11:44 AM 
  
| 1 | 1 | Chris Cannam | h1. Finding Old Branches | 
|---|---|---|---|
| 2 | 1 | Chris Cannam | |
| 3 | 4 | Chris Cannam | List bug or feature branches that have not been modified in the past 90 days and that have been merged into other branches since they were last modified: | 
| 4 | 1 | Chris Cannam | |
| 5 | 1 | Chris Cannam | <pre> | 
| 6 | 1 | Chris Cannam | $ hg -q branches | \ | 
| 7 | 2 | Chris Cannam | egrep '(bug_|feature_)' | \ | 
| 8 | 1 | Chris Cannam | while read b; do \ | 
| 9 | 4 | Chris Cannam |       oldmerges=`hg log --template '{rev}\n' -r "children(last(branch('"$b"')) and not date('-90'))"`; \ | 
| 10 | 3 | Chris Cannam | [ -n "$oldmerges" ] && echo $b ; \ | 
| 11 | 1 | Chris Cannam | done | 
| 12 | 1 | Chris Cannam | </pre> | 
| 13 | 4 | Chris Cannam | |
| 14 | 4 | Chris Cannam | List branches as above, then close each branch with a commit dated 24 hours after the branch was last modified: | 
| 15 | 4 | Chris Cannam | |
| 16 | 4 | Chris Cannam | <pre> | 
| 17 | 4 | Chris Cannam | $ hg -q branches | \ | 
| 18 | 4 | Chris Cannam | egrep '(bug_|feature_)' | \ | 
| 19 | 4 | Chris Cannam | while read b; do \ | 
| 20 | 4 | Chris Cannam |       oldmerges=`hg log --template '{rev}\n' -r "children(last(branch('"$b"')) and not date('-90'))"`; \ | 
| 21 | 4 | Chris Cannam | [ -n "$oldmerges" ] && echo $b ; \ | 
| 22 | 4 | Chris Cannam | done | \ | 
| 23 | 4 | Chris Cannam | while read b; do \ | 
| 24 | 4 | Chris Cannam |       d=`hg log --template '{date|hgdate}' -r "last(branch('"$b"'))"`; \ | 
| 25 | 4 | Chris Cannam |       closeat="$((${d%% *} + 86400)) ${d##* }"; \ | 
| 26 | 4 | Chris Cannam | hg update "$b" && hg commit -m "Closing obsolete branch $b" -d "$closeat" --close-branch; \ | 
| 27 | 4 | Chris Cannam | done | 
| 28 | 4 | Chris Cannam | </pre> | 
| 29 | 4 | Chris Cannam | |
| 30 | 4 | Chris Cannam | Needless to say, do this in a spare clone and check the result carefully before pushing! |