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/
--
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