From: Kirk, B. (JSC-EG311) <ben...@na...> - 2013-04-02 20:31:09
|
OK, at risk of entering dangerous territory… I've been using John's recommended git config flags, and have become ashamed of the amount of trailing whitespace I leave in source files. Consequently, I've added ;-------------------------------------------------- ; remove trailing whitespace (add-hook 'before-save-hook 'delete-trailing-whitespace) to my ~/.emacs, which is awesome. Problem is, I'm about to make some serious & important libMesh changes, and I don't want them swamped by a bunch of simultaneous trivial diffs in the same file (read: don't wanna piss off Roy). I've come up with a gem of a make rule that'll clean our source tree: # this rule invokes emacs on each source file to remove trailing whitespace. remove-trailing-whitespace: for file in `find $(srcdir)/{src,include,examples} -name "*.C" -o -name "*.h" -o -name Makefile.am -type f` ; do \ echo $$file ; \ emacs -batch $$file --eval '(delete-trailing-whitespace)' -f save-buffer 2>/dev/null ; \ done Any objections to a massive, whitespace-only commit? Keep in mind this may unnecessarily complicate merging with any in-work projects… -Ben |
From: Cody P. <cod...@gm...> - 2013-04-02 20:41:51
|
Haha - it seems like we've done whitespace cleanup before and it's already a mess again! Perhaps you should seriously consider taking the more draconian approach like we have and rejecting all commits containing whitespace! There's nothing funnier then watching Derek prepare a huge patch for MOOSE and then have it bounce back with a wonderful note saying that specific files contain trailing whitespace :) Seriously though, this has been one of the better rules we've implemented. It's never back-fired in any way and we no longer get spurious line changes in every patch. Cody On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) < ben...@na...> wrote: > OK, at risk of entering dangerous territory… > > I've been using John's recommended git config flags, and have become > ashamed of the amount of trailing whitespace I leave in source files. > > Consequently, I've added > > ;-------------------------------------------------- > ; remove trailing whitespace > (add-hook 'before-save-hook 'delete-trailing-whitespace) > > to my ~/.emacs, which is awesome. > > Problem is, I'm about to make some serious & important libMesh changes, > and I don't want them swamped by a bunch of simultaneous trivial diffs in > the same file (read: don't wanna piss off Roy). > > I've come up with a gem of a make rule that'll clean our source tree: > > # this rule invokes emacs on each source file to remove trailing > whitespace. > remove-trailing-whitespace: > for file in `find $(srcdir)/{src,include,examples} -name "*.C" -o > -name "*.h" -o -name Makefile.am -type f` ; do \ > echo $$file ; \ > emacs -batch $$file --eval '(delete-trailing-whitespace)' -f > save-buffer 2>/dev/null ; \ > done > > Any objections to a massive, whitespace-only commit? > > Keep in mind this may unnecessarily complicate merging with any in-work > projects… > > -Ben > > > > ------------------------------------------------------------------------------ > Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire > the most talented Cisco Certified professionals. Visit the > Employer Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > Libmesh-devel mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-devel > |
From: John P. <jwp...@gm...> - 2013-04-02 20:44:19
|
On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) < ben...@na...> wrote: > OK, at risk of entering dangerous territory… > > I've been using John's recommended git config flags, and have become > ashamed of the amount of trailing whitespace I leave in source files. > I've played around with emacs' whitespace cleanup stuff but I don't like it mainly because it removes all whitespace from a file you edit, generating huge diffs. So I switched to using pre-commit hooks in git. Name the following script "pre-commit", chmod a+x it, and save it in the .git/hooks directory of any git repo where you want to use it. The great thing is that it only cleans up whitespace from *your commit* not the entire file. I've been using it a few weeks now and would go back! #!/bin/sh if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then against=HEAD else # Initial commit: diff against an empty tree object against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi # Find files with trailing whitespace for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | sed -E 's/:[0-9]+:.*//' | uniq` ; do # Fix them! sed -i '' -E 's/[[:space:]]*$//' "$FILE" git add "$FILE" done -- John |
From: John P. <jwp...@gm...> - 2013-04-02 20:45:54
|
On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...> wrote: > been using it a few weeks now and would go back! > Derp, would *not* go back! -- John |
From: Kirk, B. (JSC-EG311) <ben...@na...> - 2013-04-02 20:50:16
|
On Apr 2, 2013, at 3:45 PM, John Peterson <jwp...@gm...> wrote: > On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...> wrote: > been using it a few weeks now and would go back! > > Derp, would *not* go back! > sure the *not* didn't get slurped up by your 'pre-send' script? thanks, I'll turn off the emacs feature and start using this for a while to see how it goes... -Ben |
From: John P. <jwp...@gm...> - 2013-04-02 20:55:29
|
On Tue, Apr 2, 2013 at 2:49 PM, Kirk, Benjamin (JSC-EG311) < ben...@na...> wrote: > > On Apr 2, 2013, at 3:45 PM, John Peterson <jwp...@gm...> wrote: > > > On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...> > wrote: > > been using it a few weeks now and would go back! > > > > Derp, would *not* go back! > > > > sure the *not* didn't get slurped up by your 'pre-send' script? > > thanks, I'll turn off the emacs feature and start using this for a while > to see how it goes... > Cool. By the way, the script I posted works for the Mac version of sed, if you want a Linux version, the second answer on this Stack Overflow should do it. http://stackoverflow.com/questions/591923/make-git-automatically-remove-trailing-whitespace-before-committing > -- John |
From: Roy S. <roy...@ic...> - 2013-04-02 20:50:54
|
On Tue, 2 Apr 2013, Kirk, Benjamin (JSC-EG311) wrote: > Any objections to a massive, whitespace-only commit? My fury is limited to whitespace-mixed-with-functionality-changes commits. Whitespace-only is fine, unless someone chimes in this afternoon to complain that they've got an upcoming merge it'll interfere with. One request, though: rename that "make remove-trailing-whitespace" target to "make beautify". We can then get in the habit of running it before a commit, and then we can replace the underlying implementation with astyle or uncrustify or whatever as we get more zealous, without making the target name atavistic. --- Roy |
From: John P. <jwp...@gm...> - 2013-04-02 21:09:39
|
On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...> wrote: > On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) < > ben...@na...> wrote: > >> OK, at risk of entering dangerous territory… >> >> >> I've been using John's recommended git config flags, and have become >> ashamed of the amount of trailing whitespace I leave in source files. >> > > I've played around with emacs' whitespace cleanup stuff but I don't like > it mainly because it removes all whitespace from a file you edit, > generating huge diffs. > > So I switched to using pre-commit hooks in git. > > Name the following script "pre-commit", chmod a+x it, and save it in the > .git/hooks directory of any git repo where you want to use it. The great > thing is that it only cleans up whitespace from *your commit* not the > entire file. > Argh, apparently that's not true all :( I just tested it out on a file in the libmesh repo and it fixed all whitespace in the file as well. Not sure what I was thinking, other than I may have only tested the pre-commit hook on files that didn't have whitespace?! -- John |
From: Derek G. <fri...@gm...> - 2013-04-02 21:55:30
|
I recommend running this in the libMesh dir: find . -name '*.[Chi]' -or -name '*.py' | xargs perl -pli -e 's/\s+$//' Then adding a commit hook to the repository that never again allows trailing whitespace to enter. Then it doesn't matter if people keep it out using Emacs or a Git pre-commit hook... but you won't ever get spurious diffs again. Like Cody says, we implemented this policy over 2 years ago... and it has been working like a champ. Derek On Tue, Apr 2, 2013 at 3:09 PM, John Peterson <jwp...@gm...> wrote: > > > > On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...>wrote: > >> On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) < >> ben...@na...> wrote: >> >>> OK, at risk of entering dangerous territory… >>> >>> >>> I've been using John's recommended git config flags, and have become >>> ashamed of the amount of trailing whitespace I leave in source files. >>> >> >> I've played around with emacs' whitespace cleanup stuff but I don't like >> it mainly because it removes all whitespace from a file you edit, >> generating huge diffs. >> >> So I switched to using pre-commit hooks in git. >> >> Name the following script "pre-commit", chmod a+x it, and save it in the >> .git/hooks directory of any git repo where you want to use it. The great >> thing is that it only cleans up whitespace from *your commit* not the >> entire file. >> > > Argh, apparently that's not true all :( > > I just tested it out on a file in the libmesh repo and it fixed all > whitespace in the file as well. > > Not sure what I was thinking, other than I may have only tested the > pre-commit hook on files that didn't have whitespace?! > > -- > John > > > ------------------------------------------------------------------------------ > Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire > the most talented Cisco Certified professionals. Visit the > Employer Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > Libmesh-devel mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-devel > > |
From: Kirk, B. (JSC-EG311) <ben...@na...> - 2013-04-02 22:19:46
|
You've got that as a git hook? Ill clean the tree tonight or tomorrow, and then work with Cody after he finds whatever bug I just presented him with... -Ben On Apr 2, 2013, at 4:55 PM, "Derek Gaston" <fri...@gm...<mailto:fri...@gm...>> wrote: I recommend running this in the libMesh dir: find . -name '*.[Chi]' -or -name '*.py' | xargs perl -pli -e 's/\s+$//' Then adding a commit hook to the repository that never again allows trailing whitespace to enter. Then it doesn't matter if people keep it out using Emacs or a Git pre-commit hook... but you won't ever get spurious diffs again. Like Cody says, we implemented this policy over 2 years ago... and it has been working like a champ. Derek On Tue, Apr 2, 2013 at 3:09 PM, John Peterson <jwp...@gm...<mailto:jwp...@gm...>> wrote: On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...<mailto:jwp...@gm...>> wrote: On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) <ben...@na...<mailto:ben...@na...>> wrote: OK, at risk of entering dangerous territory… I've been using John's recommended git config flags, and have become ashamed of the amount of trailing whitespace I leave in source files. I've played around with emacs' whitespace cleanup stuff but I don't like it mainly because it removes all whitespace from a file you edit, generating huge diffs. So I switched to using pre-commit hooks in git. Name the following script "pre-commit", chmod a+x it, and save it in the .git/hooks directory of any git repo where you want to use it. The great thing is that it only cleans up whitespace from *your commit* not the entire file. Argh, apparently that's not true all :( I just tested it out on a file in the libmesh repo and it fixed all whitespace in the file as well. Not sure what I was thinking, other than I may have only tested the pre-commit hook on files that didn't have whitespace?! -- John ------------------------------------------------------------------------------ Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html _______________________________________________ Libmesh-devel mailing list Lib...@li...<mailto:Lib...@li...> https://lists.sourceforge.net/lists/listinfo/libmesh-devel |
From: Cody P. <cod...@gm...> - 2013-04-02 22:27:02
|
On Tue, Apr 2, 2013 at 4:19 PM, Kirk, Benjamin (JSC-EG311) < ben...@na...> wrote: > You've got that as a git hook? > > Not quite - we just have that little one-liner hanging around on our "tips" page for developers to run to clean stuff up. Our svn-hook is basically the same thing (i.e. using /s+$/ to match trailing whitespace) inside of a perl script. Cody > Ill clean the tree tonight or tomorrow, and then work with Cody after he > finds whatever bug I just presented him with... > > -Ben > > > > On Apr 2, 2013, at 4:55 PM, "Derek Gaston" <fri...@gm...> wrote: > > I recommend running this in the libMesh dir: > > find . -name '*.[Chi]' -or -name '*.py' | xargs perl -pli -e 's/\s+$//' > > Then adding a commit hook to the repository that never again allows > trailing whitespace to enter. > > Then it doesn't matter if people keep it out using Emacs or a Git > pre-commit hook... but you won't ever get spurious diffs again. > > Like Cody says, we implemented this policy over 2 years ago... and it has > been working like a champ. > > Derek > > > On Tue, Apr 2, 2013 at 3:09 PM, John Peterson <jwp...@gm...>wrote: > >> >> >> >> On Tue, Apr 2, 2013 at 2:43 PM, John Peterson <jwp...@gm...>wrote: >> >>> On Tue, Apr 2, 2013 at 2:30 PM, Kirk, Benjamin (JSC-EG311) < >>> ben...@na...> wrote: >>> >>>> OK, at risk of entering dangerous territory… >>>> >>>> >>>> I've been using John's recommended git config flags, and have become >>>> ashamed of the amount of trailing whitespace I leave in source files. >>>> >>> >>> I've played around with emacs' whitespace cleanup stuff but I don't like >>> it mainly because it removes all whitespace from a file you edit, >>> generating huge diffs. >>> >>> So I switched to using pre-commit hooks in git. >>> >>> Name the following script "pre-commit", chmod a+x it, and save it in the >>> .git/hooks directory of any git repo where you want to use it. The great >>> thing is that it only cleans up whitespace from *your commit* not the >>> entire file. >>> >> >> Argh, apparently that's not true all :( >> >> I just tested it out on a file in the libmesh repo and it fixed all >> whitespace in the file as well. >> >> Not sure what I was thinking, other than I may have only tested the >> pre-commit hook on files that didn't have whitespace?! >> >> -- >> John >> >> >> ------------------------------------------------------------------------------ >> Minimize network downtime and maximize team effectiveness. >> Reduce network management and security costs.Learn how to hire >> the most talented Cisco Certified professionals. Visit the >> Employer Resources Portal >> http://www.cisco.com/web/learning/employer_resources/index.html >> _______________________________________________ >> Libmesh-devel mailing list >> Lib...@li... >> https://lists.sourceforge.net/lists/listinfo/libmesh-devel >> >> > > > ------------------------------------------------------------------------------ > Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire > the most talented Cisco Certified professionals. Visit the > Employer Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > Libmesh-devel mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-devel > > |