Zend Framework: Zend_RepoMon Component Proposal
| Proposed Component Name | Zend_RepoMon |
|---|---|
| Developer Notes | http://framework.zend.com/wiki/display/ZFDEV/Zend_RepoMon |
| Proposers | Eric David |
| Revision | 1.1 - 27 December 2007: Initial draft. (wiki revision: 24) |
Table of Contents
1. Overview
Zend_RepoMon is a tool that identifies and reports programatic modifications made to PHP and JavaScript files within a version control system.
2. References
3. Component Requirements, Constraints, and Acceptance Criteria
- This component will report the addition, deletion or signature modification of a class, method or independent function within PHP and JavaScript files.
- This component will be able to generate reports in either plain text, bare (CSS-ready) XHTML 1.1 or XHTML with inline styles.
- The initial release will only support SVN, but will be built scalable to be able to add CVS and other versioning systems support.
- This component will be able to automatically email user-specific reports on a periodic basis when used in tandem with an instantiating script and crontab.
- This component will be able to accept revision boundaries as revision numbers, versioning system constants (head, prev, etc.) or any valid date/time format as defined by strtotime().
- This component will not in any way modify files within the versioning system. For extra security, users are encouraged to utilize a read-only versioning system user account with RepoMon.
4. Dependencies on Other Framework Components
- Zend_Exception
5. Theory of Operation
RepoMon abstracts data gathered from the versioning system and generates a report of modifications to classes, method signatures and functions. Reports can be displayed via the browser or from the command line and can be sent via email as well. Various reporting output formats can be selected. The XHTML 1.1 format allows complete control over the display appearance via CSS.
6. Milestones / Tasks
- Milestone 1: Finalize a working draft of this proposal suitable for a basis to guide development
- Milestone 2: Establish a functional module within the Zend framework based on the initial Component Requirements, Constraints, and Acceptance Criteria
- Milestone 3: Debug and create test cases
- Milestone 4: Add support for other output formats such as JSON and XML
- Milestone 5: Enhance, improve and expand functionality based on feedback from Zend community
- Milestone 6: Add support for other versioning systems
7. Class Index
- Zend_RepoMon
- Zend_RepoMon_Exception
- Zend_RepoMon_EmailSender (This could possibly be replaced with Zend_Mail)
8. Use Cases
All use cases need a username, password and base path to repository. For brevity the use cases assume the following precedes them (and is substituted with values from your versioning system.)
| UC-01 |
|---|
Get revisions since yesterday
| UC-02 |
|---|
Get all the revisions from the previous week
| UC-03 |
|---|
Get revisions made to the Zend framework in the previous week
| UC-04 |
|---|
Send a text-based email containing November revisions
| UC-05 |
|---|
Send an HTML-based email formatted for legacy mail clients that do not support CSS
| UC-06 |
|---|
Display nicely formatted XHTML 1.1 modifications
example.css
2 Comments
comments.show.hideJan 10, 2007
Matthew Ratzloff
Although I questioned the usefulness of this proposal initially, it occurred to me that PHP tools for repository viewing aren't recognized as the best of their type and that maybe something that does the "heavy lifting" would prompt the creation of some for those programmers who were more focused on user interface design.
You might rename this proposal, though. I know CPAN calls their interface VCS. Something like Zend_Repository, Zend_Vcs, Zend_VersionControl, etc.
Jul 13, 2007
Darby Felton
From the described functionality, it appears that this component would duplicate functionality perhaps better served, in the case of SVN, by hooks and shell scripting:
Though the project scope is a bit different, I think it is interesting that USVN - UserFriendly SVN is built with ZF.