git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Feature suggestion: git-hist

From
H.Merijn Brand <h.m.brand@xs4all.nl>
Date
Jul 30, 2008, 11:38 UTC
Message-ID
<20080730133859.368bbd92@pc09.procura.nl>

I've talked about this with Arjen, and he suggested to put it here. Please Cc me too, as I have little time to follow this quite busy list.

Suggestion
	Add a new command: 'git-hist' that will show a blame log of a
	single file with each line `tagged' with the most recent tag
	plus the number of changes since that tag.
Relationale.
	Coming from SCCS, each file `keeps' a version in a keyword like
	%R%.%L% which is included in the file when a release is made.
	The unix command 'what' will show all SCCS id's when used on a
	object, like
	% what probev | head -10
	probev:
		$Revision: 92453-07 linker linker crt0.o B.11.60 070209$
		probev.ic       5.27    [07/11/14]
		Make info: HP-UX B.11.00 9000/800; 14 Jul 2008, 14:52; v04.3.6.04:v82BC anrs.ic 5.5     [07/04/10]
		arsmon.ic       5.19    [08/07/09]
		controle.ic     5.40    [2008-03-18]
		goedmut.ic      5.19    [07/05/16]
		gvh.ic  5.8     [06/06/13]
		inw.ic  5.8     [06/06/12]
	All software has bugs, so has ours, and we ship updates, just as
	git makes updates available to the world. I just updated to the
	most recent 1.5.6.4.
	We make our updates available to our customers, but they
	sometimes wait weeks or months to install the updates, but still
	complain about bugs that already have been fixed and for which
	they already received an update.
	I can ask them what version they have, and I can then check if
	the complaint was already addressed in an update that was
	already released. In SCCS this was easy: they tell me the output
	of the what command, I check if the bug was fixed in a newer
	version and the answer is present. No such luck in git, as the
	stamps are (non-sequitive) SHA id's. As we moved to git, we now
	have to update those id's by hand, as the customers are used to
	it. (At least we can now use readable date formats)
Implementation
	Attached is my perl script git-hist, which is how I currently
	use it, which will show the blame log of a file, with each line
	prefixed with the tag plus changes since. So I can tell that if
	the customer runs release version 0.34, the line in question has
	been added before or after.
	* Tag all releases with a version number like 5.10.0 or
5.10.1-RC2
          (give or take the annoying quircks that git refuses some characters
           in tag names, which changed without warning in the 1.5.x track so
           I had to manually rename all my 'v 0.53' tags to loose the space)
        * Count changes since last tag

# git-hist *pm | perl -ne'63..83 and print' 09d4472 2007-12-06 13:25:58 63: allow_loose_quotes => 0, 09d4472 2007-12-06 13:25:58 64: allow_loose_escapes => 0, 09d4472 2007-12-06 13:25:58 65: allow_whitespace => 0, caf4798 2008-02-19 17:56:36 0.34 + 004 66: blank_is_undef => 0, 09d4472 2007-12-06 13:25:58 67: verbatim => 0, 09d4472 2007-12-06 13:25:58 68: types => undef, 09d4472 2007-12-06 13:25:58 69: 8648db0 2008-03-27 18:37:54 0.37 + 002 70: 09d4472 2007-12-06 13:25:58 71: _EOF => 0, 09d4472 2007-12-06 13:25:58 72: _STATUS => undef, 09d4472 2007-12-06 13:25:58 73: _FIELDS => undef, 09d4472 2007-12-06 13:25:58 74: _FFLAGS => undef, 09d4472 2007-12-06 13:25:58 75: _STRING => undef, 09d4472 2007-12-06 13:25:58 76: _ERROR_INPUT => undef, 2b95026 2008-04-04 11:10:09 0.37 + 006 77: _COLUMN_NAMES => undef, ce53d02 2008-04-06 00:40:26 0.37 + 016 78: _BOUND_COLUMNS => undef, 09d4472 2007-12-06 13:25:58 79: ); caf4798 2008-02-19 17:56:36 0.34 + 004 80: my $last_new_err = ""; 09d4472 2007-12-06 13:25:58 81: 09d4472 2007-12-06 13:25:58 82: sub new 09d4472 2007-12-06 13:25:58 83: {

	Or for a perl file

# git-hist xsutils.c | perl -ne'30..50 and print' 02ca0a6 2005-04-21 17:38:30 perl-5.9.2 + 104 30: PERL_XS_EXPORT_C void XS_attributes_bootstrap(pTHX_ CV *cv); d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 31: d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 32: d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 33: /* d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 34: * Note that only ${pkg}::bootstrap definitions should go here. d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 35: * This helps keep down the start-up time, which is especially d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 36: * relevant for users who don't invoke any features which are d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 37: * (partially) implemented here. d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 38: * d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 39: * The various bootstrap definitions can take care of doing d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 40: * package-specific newXS() calls. Since the layout of the 2136f35 2000-02-04 05:58:57 perl-5.005 + 2832 41: * bundled *.pm files is in a version-specific directory, d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 42: * version checks in these bootstrap calls are optional. d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 43: */ d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 44: 02d011f 2006-05-02 19:46:38 perl-5.9.3 + 950 45: static const char file[] = __FILE__; 02d011f 2006-05-02 19:46:38 perl-5.9.3 + 950 46: d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 47: void d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 48: Perl_boot_core_xsutils(pTHX) d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 49: { d66c5aa 1999-09-07 19:25:07 perl-5.005 + 1988 50: newXS("attributes::bootstrap", XS_attributes_bootstrap, file);

-- 
H.Merijn Brand          Amsterdam Perl Mongers  http://amsterdam.pm.org/
using & porting perl 5.6.2, 5.8.x, 5.10.x, 5.11.x on HP-UX 10.20, 11.00,
11.11, 11.23, and 11.31, SuSE 10.1, 10.2, and 10.3, AIX 5.2, and Cygwin.
http://mirrors.develooper.com/hpux/           http://www.test-smoke.org/
http://qa.perl.org      http://www.goldmark.org/jeff/stupid-disclaimers/
Next: Pieter de Bie
Message 1 of 13 in “Feature suggestion: git-hist”
  1. H.Merijn BrandJul 30, 2008
  2. Pieter de BieJul 30, 2008
  3. H.Merijn BrandJul 30, 2008
  4. Lars NoschinskiJul 30, 2008
  5. H.Merijn BrandJul 30, 2008
  6. Miklos VajnaJul 30, 2008
  7. H.Merijn BrandJul 30, 2008
  8. Santi BéjarJul 30, 2008
  9. Avery PennarunJul 30, 2008
  10. Lars NoschinskiJul 30, 2008
  11. Santi BéjarJul 30, 2008
  12. H.Merijn BrandJul 30, 2008
  13. H.Merijn BrandJul 30, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.