view TODO @ 338:3cfa4d908fc9

Add options to control DataAccessProvider, allow to turn off use of file memory mapping in particular to solve potential sharing violation (os file handle gets released on MappedByteByffer being GC'd, not on FileChannel.close())
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 15 Nov 2011 04:47:03 +0100
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