view TODO @ 262:3dcd3dd90c77

Improve manifest parsing: decode bytes to chars once, minimize arraycopy on String instantiation, keep set of file revisions from previous manifest only
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 18 Aug 2011 03:46:36 +0200
parents ffc5f6d59f7e
children 9517df1ef7ec
line wrap: on
line source
Read-only support, version 1.0
==============================
Committed:
* store+fncache, RevlogNG (i.e. no support for older store formats) 

* hg log
  + user, branch, limit
  - date, 
  + filename
  + filename and follow history

  
* hg manifest (aka ls)

  
* hg status
  + copies for [revision..revision] and for [revision..working dir]
  + path or anything meaningful instead of Strings
  + matchers

* hg cat
  + CatCommand. File, revision. 
  + Cat command line client

+ hgignore
  + glob
  + pattern

+ Tests with JUnit
  + allow to specify repo location (system property)
  + keep a .zip of repo along with tests 

* tags
  * Tags are read and can be queried (cmdline Log does)
  
* keywords
  + filter with context (HgRepository + Path + Direction (to/from repo)
  - filters shall have weight (to allow certain filter come first). Would need that once FilterFactories are pluggable

* newlines
  + \r\n <==> \n
  - force translation if inconsistent (now either fails or does nothing)

* API
  - CommandContext
  + Data access - not bytes, but ByteChannel
  - HgRepository constants (TIP, BAD, WC) to HgRevisions enum

Proposed:
- LogCommand.revision(int... rev)+ to walk selected revisions only (list->sort(array) on execute, binary search)
- LogCommand.before(Date date) and .after()
- LogCommand.match() to specify pattern, no selected file()s only?
* RepositoryFacade and CommandContext  
- hgignore: read extra ignore files from config file (ui.ignore)
- Revlog iteration in reversed order (either support internally in RevlogStream or externally, windowed access)


Read-only support, version 1.1
==============================
Committed:
* Network protocol/connections:
  + http
  * https (respects no certificates)
  - ssh
  
* incoming
  + 'lite' (revisions only)
  + 'full' (complete changelog)
  * branches (no tests) 
  - subrepositories

* outgoing
  + 'lite' (revisions only)
  + 'full' (complete changelog access) 
  * branches (no tests) 
  - subrepositories

* clone remote repo
  + into new or empty directory
  - populate working copy