Skip to end of metadata
Go to start of metadata

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_RepoMon Component Proposal

Proposed Component Name Zend_RepoMon
Developer Notes
Proposers Eric David
Revision 1.1 - 27 December 2007: Initial draft. (wiki revision: 25)

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.)


Get revisions since yesterday


Get all the revisions from the previous week


Get revisions made to the Zend framework in the previous week


Send a text-based email containing November revisions


Send an HTML-based email formatted for legacy mail clients that do not support CSS


Display nicely formatted XHTML 1.1 modifications


9. Class Skeletons



Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Jan 10, 2007

    <p>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.</p>

    <p>You might rename this proposal, though. I know CPAN calls their interface VCS. Something like Zend_Repository, Zend_Vcs, Zend_VersionControl, etc.</p>

  2. Jul 13, 2007

    <p>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:</p>

    <li><a href="">Implementing Repository Hooks</a></li>
    <li><a href="">SVN::Notify</a></li>

    <p>Though the project scope is a bit different, I think it is interesting that <a href="">USVN - UserFriendly SVN</a> is built with ZF. <ac:emoticon ac:name="smile" /></p>