Implementing $Date$ substitution - problem with git status
- From
Peter Krefting <peter@softwolves.pp.se>
- Date
- Aug 9, 2009, 19:37 UTC
- Message-ID
- <alpine.DEB.2.00.0908092127420.17141@perkele.intern.softwolves.pp.se>
Hi!
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 $ [...]
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.
Does anyone know if there is a way to get this to work, or am I screwed for trying to do things I'm not supposed to? :-)
-- \\// Peter - http://www.softwolves.pp.se/