On Sonntag, 9. August 2009, Peter Krefting wrote: > I finally got around to moving my web site repository over from CVS to Git, > and to not have to redo everything about how it is set up, I set up a > filter that fakes CVS' handling of "$Date$" keywords. Since I cannot access > any information about the file from the "smudge" filter, I set up a "clean" > filter that edits the $Date$ token on "git add": > > #!/usr/bin/perl -wTp -i.bak > if (/\$Date:?[^\$]*\$/) > { > my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = > localtime(); my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year + > 1900, $mon + 1, $mday, $hour, $min, $sec); > s/\$Date:?[^\$]*\$/\$Date: ${now} \$/; > } > > In .gitattributes I have lines like: > > *.html filter=date crlf=true ident > > and filter.date.clean is set to point to the script above in .git/config. > > This works fine, except that I have some problems with files that I cannot > get to be "clean" in git status. "git diff" shows only a difference in the > "$Date$" token, which is different each time I run "git diff" (the "+" line > shows the current time): > > diff --git a/.htaccess b/.htaccess > index 2dfbc32..d8ac343 100644 > --- a/.htaccess > +++ b/.htaccess > @@ -2,7 +2,7 @@ > # ----------------------------------------------------- > > # $Id$ > -# $Date: 2009-08-09 19:52:30 $ > +# $Date: 2009-08-09 20:31:56 $ > [...] The clean filter is applied before 'git diff' generates the diff. Since you have unstaged changes (I take [...] to mean this), you see a new date on every invocation. After 'git add .htaccess' subsequent 'git diff' should not show any changes. > Strangely, the $Id$ line above (which is handled by me adding the "ident" > attribute to all text files), does not exhibit the same problem. > > Doing "git reset --hard" or "git checkout master filename" does not help, > the file is still believed to be modified by git. Now, that's an entirely different problem, and I think that there is a bug. I have observed this as well with my own clean filter sometimes, but not always. I haven't found a recipe that reliably exhibits the problem. -- Hannes -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html