From: Johannes Sixt <j6t@kdbg.org>
To: Peter Krefting <peter@softwolves.pp.se>
Cc: Git List <git@vger.kernel.org>
Subject: Re: Implementing $Date$ substitution - problem with git status
Date: Sun, 9 Aug 2009 22:52:58 +0200 [thread overview]
Message-ID: <200908092252.58363.j6t@kdbg.org> (raw)
In-Reply-To: <alpine.DEB.2.00.0908092127420.17141@perkele.intern.softwolves.pp.se>
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
next prev parent reply other threads:[~2009-08-09 20:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-09 19:37 Implementing $Date$ substitution - problem with git status Peter Krefting
2009-08-09 20:52 ` Johannes Sixt [this message]
2009-08-10 4:41 ` Peter Krefting
2009-08-12 6:54 ` Peter Krefting
2009-08-12 8:36 ` Problems with filters and git status - reproduction steps Peter Krefting
2009-08-12 8:55 ` Michael J Gruber
2009-08-12 9:25 ` Peter Krefting
2009-08-13 6:47 ` Implementing $Date$ substitution - solution using pre-commit Peter Krefting
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200908092252.58363.j6t@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=peter@softwolves.pp.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox