eda-tools/schhist
Werner Almesberger afae5c753e Merge branch 'master' of projects.qi-hardware.com:eda-tools 2012-12-05 00:43:39 -03:00
..
ppmdiff updated gitsch2ps to new eeschema --plot syntax 2011-01-02 17:55:37 +00:00
COPYING.GPLv2 Added licensing information and a bit more documentation to schhist. 2010-10-20 07:39:31 -03:00
Makefile Environment variable SCHHIST_ADDLIBS to force libraries to be present. 2010-10-04 03:04:35 -03:00
README schhist/README: fixed typo (by Holger Freyther) 2011-08-11 06:11:43 -03:00
demo-index.html Added AVT2 to the Makefile and the demo index. 2010-10-03 23:31:35 -03:00
gitenealogy Initial commit of files moved over from ben-wpan. 2010-09-07 17:03:19 -03:00
gitsch2ps updated gitsch2ps to new eeschema --plot syntax 2011-01-02 17:55:37 +00:00
gitwhoareyounow gitwhoareyounow: determine a file's final name in recorded future 2010-09-22 06:01:32 -03:00
normalizeschps Initial commit of files moved over from ben-wpan. 2010-09-07 17:03:19 -03:00
sanitize-profile schhist/sanitize-{profile,schem}: "dirname" logic was reversed 2012-05-24 00:21:36 -03:00
sanitize-schem schhist/sanitize-{profile,schem}: "dirname" logic was reversed 2012-05-24 00:21:36 -03:00
schhist-qi-update-all curdir fix 2012-11-26 07:23:12 +01:00
schhist2web schhist/schhist2web: explicitly suppress diff in "git show" 2012-12-05 00:41:40 -03:00
schps2pdf Initial commit of files moved over from ben-wpan. 2010-09-07 17:03:19 -03:00
schps2ppm Initial commit of files moved over from ben-wpan. 2010-09-07 17:03:19 -03:00
subschname2file schhist/subschname2file: search a subsheet name in the top-level sheet and 2010-09-22 06:42:06 -03:00

README

schhist - Graphical revision history of schematics
==================================================

The schhist system walks the git revision history of a KiCad project
and produces Web-browseable graphical differences of the schematics.

It does so by checking out each revision from git, sanitizing the
project to prevent problems what would cause eeschema to stop and
display an error dialog, using eeschema to "plot" the project to
Postscript, making some small adjustments (position, line width) to
the Postscript, converting it to PPM with Ghostscript, making a
pixel-wise comparison of revisions, and arranging the resulting
images in an HTML page. Further more, sub-pages with magnifications
and PDF files are generated.


This work is distributed under the terms of the GNU GENERAL PUBLIC
LICENSE, Version 2:

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

For your convenience, a copy of the complete license has been included
in the file COPYING.GPLv2.


schhist2web
-----------

Web-browseable graphical revision history of schematics 
...


subschname2file
---------------

Translate a subsheet's name to the sheet file's name
...


sanitize-profile
----------------

Remove items from a KiCad profile that may cause an upset
...


sanitize-schem
--------------

Remove items from KiCad schematics that may cause an upset
...


gitsch2ps
---------

Generate PS files for KiCad schematics in git
...


normalizeschps
--------------

Normalize eeschema Postscript
...


ppmdiff
-------

Mark differences in two PPM files
...


schps2pdf
---------

Generate PDF files from Eeschema Postscript 
...


schps2ppm
---------

Generate PPM files from normalized Eeschema Postscript
...


gitenealogy
-----------

Trace the ancestry of a file in git across renames
...


gitwhoareyounow
---------------

gitwhoareyounow is used to find a single identity for files that have been
renamed in the history of a project.

E.g., if a file foo.c is created in revision 1 (assuming successive revisions
numbered 1, 2, etc.) and renamed to bar.c in revision 2, gitwhoareyounow
would then return the name bar.c for this file in any revision we consider.

gitwhoareyounow has to be given a repository in which the historical commit
has been checked out, and the name the file had in that commit.

Example:

$ git init
$ date >foo.c
# git add foo.c
# git commit -m "foo.c, rev 1"
$ git mv foo.c bar.c
$ git commit -m "foo.c renamed to bar.c, rev 2"
$ git checkout HEAD~1
$ ls
foo.c
$ gitwhoareyounow . foo.c
bar.c


Multiple files may use the same identity
- - - - - - - - - - - - - - - - - - - - 

E.g., if a file foo.c is created in revision 1, deleted in revision 3, and
then a new file named foo.c is created in revision 4, gitwhoareyounow would
call both of them foo.c


Multiple files sharing the same identity can conflict
- - - - - - - - - - - - - - - - - - - - - - - - - - -

E.g., taking the first example with foo.c renamed to bar.c in revision 3, if
a file bar.c existed in revision 1 but was deleted in revision 2,
gitwhoareyounow running on revision 1 would identify both the foo.c and the
bar.c as bar.c

gitwhoareyounow does not try to resolve such conflicts. This is already
complex enough as it is :-)