The tools, documentation, etc. in this directory are intended to be helpful
to developers of Lucene and Solr.  They are not necessarily maintained in
the same way that the core code is maintained and so your mileage may vary
as to the usefulness of the tools.

Description of dev-tools/ contents:

./size-estimator-lucene-solr.xls -- Spreadsheet for estimating memory and disk usage in Lucene/Solr
./doap/       -- Lucene and Solr project descriptors in DOAP RDF format.
./eclipse/    -- Used to generate project descriptors for the Eclipse IDE.
./git/        -- Git documentation and resources.
./idea/       -- Used to generate project descriptors for IntelliJ's IDEA IDE.
./maven/      -- Mavenizes the Lucene/Solr packages
./netbeans/   -- Used to generate project descriptors for the Netbeans IDE.
./scripts/    -- Odds and ends for building releases, etc.
./test-patch/ -- Scripts for automatically validating patches
