Denver Gingerich c50477d386 bfg: update patch to cleanly apply to latest bfg
With this update, the bfg patch will now apply cleanly to the latest
bfg, which is at this commit on the master branch as of this writing:

aeee9e30e0

Note that it is possible to simply clone and build the already patched bfg. See documentation.

Closes #9
2019-05-10 15:39:16 -07:00
2017-04-28 09:47:47 +02:00
2019-05-10 15:10:46 -07:00
2019-05-10 15:10:46 -07:00
2019-05-10 15:10:46 -07:00
2018-10-05 08:27:42 -07:00
2019-05-10 15:10:46 -07:00
2017-04-27 17:10:46 +02:00
2017-04-27 17:18:31 +02:00

readme

./logos/cregit.png

Preliminaries

  • Code is written in scala, C++ and perl.
  • For scala code, use sbt to build and run programs. It is the easiest
  • This code has only being tested under Linux, but it should run under MacOS

Prerequisites

srcml https://www.srcml.org/ Make sure srcml is in path
ctags https://github.com/universal-ctags Make sure ctags is in path
bfg https://github.com/dmgerman/bfg-repo-cleaner/tree/paul-blob-exec Download this branch

bfg

  • obtain the above bfg branch
git clone https://github.com/dmgerman/bfg-repo-cleaner.git --branch paul-blob-exec
  • build in the bfg root directory
sbt
bfg/assembly

Dependencies:

For each module, its dependencies are documented in their corresponding readme.org file.

How to build

  • compile slickGitLog, persons, remapCommits with sbt in their directories (sbt can be found at

https://www.scala-sbt.org/download.html repo)

sbt one-jar
  • use make to compile srcMLtoken
  • perl scripts can be run without compilation

How to use

This is the workflow to process a git repository with cregit, and to generate the HTML views of its contributions.

  • It assumes that the cregit-repository will be created in /tmp/xournal
  • The original repository is located at /home/dmg/git.hacking.mine/xournal
  1. Create the view repository.

To tokenize the files we require to create some environment variables to communicate with the tokenizing script

BFG_MEMO_DIR directory to use for memoization of tokenized files
BFG_TOKENIZE_CMD command to use to tokenize, might include parameters

Example:

  • use the tokenizeByBlobId/tokenBySha.pl to do the tokenization
  • tokenBySha.pl will execute
./tokenizeSrcMl.pl --srcml2token=<path to srcml2token> --srcml=<path to srcml> --ctags=<path to ctags>

Run it as:

export BFG_MEMO_DIR=/tmp/memo
export BFG_TOKENIZE_CMD=/home/dmg/git.dmg/cregit-scala/tokenize/tokenizeSrcMl.pl --srcml2token=/home/dmg/git.dmg/cregit-scala/tokenize/srcMLtoken/srcml2token --srcml=srcml --ctags=/usr/local/bin/ctags
java -jar bfg-cregit.jar '--blob-exec:/home/dmg/git.dmg/cregit-scala/tokenizeByBlobId/tokenBySha.pl=.[ch]$' --no-blob-protection /path/repo
  1. Create the history database for the original repo
java -jar slickGitLog.jar /tmp/xournal-original.db /home/dmg/git.hacking.mine/xournal
  1. Create the history database for the cregit repo
java -jar slickGitLog.jar /tmp/xournal-cregit.db /tmp/xournal
  1. Create the persons database
java -jar persons.jar /home/dmg/git.hacking.mine/xournal /tmp/xournal.xls /tmp/xournal-persons.db
  1. Create blame of cregit files
perl blameRepoFiles.pl --verbose --formatBlame=./formatBlame.pl /tmp/xournal /tmp/blame '\.[ch]$'
  1. create the table with the map from newcommits to commits
java -jar remapCommits.jar /tmp/xournal-cregit.db /tmp/xournal
  1. Create html version of the files

Example:

perl ./prettyPrintFiles.pl --verbose /tmp/xournal-cregit.db /tmp/xournal-persons.db ~/git.hacking.mine/xournal /tmp/blame /tmp/html https://github.com/dmgerman/xournal-next/commit/ '\.[ch]$'

License

The license of Cregit is GPL-3.0+

TODO

  • create temporary files in TMP proper location
  • use preferred name in html files
  • create a driver program for processing an entire repository
  • customize programs to read a JSON file with configuration?
Description
No description provided
Readme 3.4 MiB
Languages
C 35.7%
Perl 23.2%
Scala 14.2%
C++ 13.6%
Python 4.8%
Other 8.5%