# -----------------------------------------------------------
# This document describes how to generate the Eclipse ip log
# for the eclipse project technology.jgit using a local clone
# of the git repository
#     git://egit.eclipse.org/jgit.git
# starting point is a manually written file
#     .eclipse_iplog
# located in the repository's work dir root path
# which is describing the project, see first section of this
# file in the jgit root directory:
#     $JGIT_BASE/.eclipse_iplog
# -----------------------------------------------------------
# Prepare:
# jgit work tree base dir
export JGIT_BASE="c:/data/ide/helios/jgit"

# repository work dir root path
export WORK_DIR="c:/data/ide/helios/jgit"

# cd to repository work dir root path (for jgit this is identical to $JGIT_BASE)
cd $WORK_DIR

# -----------------------------------------------------------
# Update the CQ list:
# - this command updates file .eclipse_iplog
java -jar $JGIT_BASE/org.eclipse.jgit.pgm/target/jgit-cli.jar eclipse-ipzilla

# - if there are any updates 'git commit' them
git add .eclipse_iplog
git commit

# - type in ipzilla user and password

# -----------------------------------------------------------
# Get the committer data from gerrit:
# - start gerrit gsql via ssh
# options:
#     -p : ssh port gerrit is listening on
ssh -p 29418 username@egit.eclipse.org gerrit gsql --format PRETTY

# - type in ssh passphrase for your ssh key
# - run the SQL query (cut and paste content to interactive gerrit shell)
#      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/gsql_query.txt
# - copy the query result into the file (no headers, no blank lines):
#      $WORK_DIR/.git/gerrit_committers

# -----------------------------------------------------------
# Generate the iplog:
# options:
#     -- version : the project version the iplog is to be generated for
#     - o : the output file
java -jar $JGIT_BASE/org.eclipse.jgit.pgm/target/jgit-cli.jar eclipse-iplog --version=0.8.0 -o jgit-0.8.0.xml


