CVSWEBEDIT - an editable interface to CVS using the Web.

CVSWEBEDIT allows you to alter files in a CVS repository using a Web Browser

Features:
--------

Add and delete file (And as binary) [No, neither]
Launch a arbitrary CVS command.[No]
Lock a file for edits (becomes owner) [Yes]
Locking should be compatible with reserved checkouts scheme (ie. uses  cvs admin -l) [Yes]
Owner can unlock a file after having done an edit [Yes]
Owner can unlock a file after not having done an edit [Yes]
Owner can download a further copy of a file checked out for edit [Yes]
Only the HEAD revision can be locked for edits [Yes]
Only the HEAD revision can be checked in.[Yes]
Owner can see the version number of the file checked out and the proposed version number for the new version [No, not yet]
When owner checks in file he is asked for a comment. The comment can be blank. [NO - MAJOR DEFICIENCY]
The interface can be used to perform tagging.[No]
Comments can be edited after submitted [No]
CVS puts real user names in the cvs log [NO - MAJOR DEFICIENCY]
Non-owner cannot unlock a file [Yes]
Non-owner can see who has got the file out [Yes]
No authentication is required; users can choose who they are based on a list of users. If user name is passed in by the web server then this overrides selection of user name by the user. If user name is not passed in by web server, user can choose user name by user=username parameter. If user name is still not passed in user name is set by cookie. [Yes]
When users first identify themselves a cookie is sent to the browser.[Yes]
CVSwebedit will repeatedly prompt for a user name until one is provided. [Yes]
Only recognised user names will be accepted. [Yes]
User names are listed in a flat file on disk together with a fullname (first name, Surname alias). User names are usually used in listings. [Yes]
All output sent to the browser is first sent to a log file. [Yes, via do_log]
Diagnostics are saved.[No]
Long term logging is implemented [No]
All incorrect usages of cvsweb result in the usage page being shown.[Yes]
All correct usages of cvsweb are listed on the usage page. [Yes]


State machine:.
--------------

Each file operates around its own state machine. Most commands operate
on a file, the exceptions being show-status and show-usage, which
don't affect any states.

The two states are : locked and unlocked. 

Two commands take you from unlocked to locked: lock-and-download &
add-file.

Four commands take you from locked to unlocked: discard-lock,
upload-and-unlock, (submit-text-changes, not implemented),
(break-lock, not implemented)

Two commands leave the file in the locked state: upload-form and
download-file.



Tests:
------

What happens if you give a URL to check in with to a file that has not been checked out?

Are newlines etc accepted in the comments box?

Does a big download/upload work?
Does the locking work?
Does the unlocking work? (after unlock and after commit)
What should cvs status say after cvs admin -l?
Does the upload refreshing page work?

FIXME's are fixed.
EXTBUG's are reported.


Screens:
-------

screen_name	implementing procedure

Login Page	login_user		user name not set.
Show status	show_status		file not found or edit not specified o
Lockowner_returning lockowner_returning	edit=start, file already out, user=owner
Not Implemented not_implemented
Discard Lock	discard_lock		edit=discard-lock
Edit Text	show_file_for_edit_text (NI) NEVER
(Submit Text Changes submit_text_changes	method=post, edit!=upload-and-unlock)
Prepare Edit Binary     show_file_for_edit_binary edit=start, file not out.
Already Checked Out show_file_for_edit_binary	edit=start, file out
Lock And Download Binary	lock_and_download	edit=lock-and-download
Download Checked Out File	download_checked_out_file edit=download-file
Upload Form	upload_form	edit=upload-form
Save Upload	save_upload
Upload And Unlock upload_and_unlock
Die Page	die_page

