# Git to do list
This was originally just a list of the tools that needed to be written before we could make the switch to git. I'm now turning it into a more general to do list
## Before
The following are the tasks which needed to be completed before (or at the same time as) the switch being thrown.
### Repository Conversion
- Make IBM the author of the initial revision
- Add a line to the comments of branch commits, indicating the SHA1 of the corresponding HEAD commit (this requires more reordering logic, so that the HEAD commit always lands first)
- Tidy up the remaining FIXES that have no associated bug IDs
- Remove the branch signifier from the delta reference (as it has no significance)
- Reach a decision about tag and branch name formats (underscores or dots) and implement it
### Gerrit
- Install gerrit on the Stanford machine
- Make arrangements for database backups
- Make arrangements for Jetty starting at machine boot
- Stop gerrit from forging email
### cvs commit emails
We need to preserve the existing cvs commits mailing list. Russ has a plan to do this by using a second git repository, into which gerrit will automatically push all of the changes it receives. A post-receive hook script can then be used on this repository to generate commit emails. Russ is going to set this up once the final repository is in place, so this is fundamentally done.
### Delta creation web page
We need a mechanism for keeping the delta name information up to date, as gerrit won't be (directly) tracking it. The proposal is to have a protected web page which takes a git SHA1, and a delta name, and creates the necessary reference to associate the two together.
### Pullup script
Write a script which takes the master delta name, the branch target, and cherrypicks the change to the branch. This should bypass gerrit if the cherrypick succeeds (This should probably use a different SSH key than the one normally used for head commits). For commits which require manual changes, there should be a choice between directly applying the massaged change to the branch, and submitting it via gerrit.
### Wdelta
Write a replacement for wdelta that understands how to reassemble the disjoint patchsets that are used to represent deltas in git
### .gitignore files
Generate .gitignore files, based on the existing .cvsignore files and some common sense
## Shortly after
These items will be required shortly after we complete the switchover
### Release Building Script
(we can't release without it!)
A script is required to produce the basics of a release. It should do something like the following:
- Take SHA1 of tag point
- Need to tag tree
- But, need to have option to run without tagging
- Need to preserve difference between doc and source tree (generate tarballs for both)
- Generate diff between two tags
- Generates changelog from complete commit log on every patch
### Delete all RCSID("") markers
Git doesn't give us RCSIDs, so we should delete all of the places in the code where these occur.
## After
These are things that we believe it would be nice to have, but that we're not going to delay flipping the switch for ...
### Gerrit changes
- Support for naming deltas within Gerrit, as part of the 'submit' action.
### persistent repository clone in afs
Build a persistent clone & checkout of the master in AFS. Get gerrit and/or cron to keep this constantly up to date.
-- Simon Wilkinson - 06 Jun 2009