About eGURU
eGURU Process
Operational Details
Participants
Project Ideas
Scholarships
FAQs
The Proposal Details
To create a comprehensive and easy-to-use web interface for version control systems
Programming
It is often necessary to keep around multiple versions of a file. This can be useful, for example, when a software developer needs access to old versions of a source file to check out some bug reported against that version. A version control system allows the developer to quickly extract and examine the older version and get a quick difference report between the old and current version. CVS, Subversion, etc., are examples of commonly used version control systems. A brief look at the terminology used here: The central storage that the version control system uses is called the repository. When a developer wishes to extract a file (or a whole directory) from the repository, the operation used is known as a “checkout”. The developer then modifies the checked-out files as required and then submits the changes back into the repository, a process known as a “commit”. Version control systems typically provide mechanisms to handle files checked-out, and modified, by multiple users at the same time. This is extremely useful, for example, for large projects being worked on by many developers at the same time. VC systems typically provide command-line tools to checkout files and commit changes back to the repository. Although these tools are powerful and do their job well, they have the limitation that the system has to be installed even if the user only wishes to view the files. So, a system that allows the user to browse a versioned repository using a web browser can be useful.
This project aims to create a unified web interface to version control systems. It will allow a user to browse through a version control repository using an ordinary web browser. The user will be able to: browse the repository directory structure view the current version of any file view any chosen previous version of any file view the metadata associated with any file: things like date and time of last commit, the name of the user who has last modified the file, etc. view the differences between any two chosen versions of a file view the log messages associated with particular versions download particular versions of a file This project will support browsing through CVS and Subversion repositories. It will be implemented as CGI scripts and server modules. The Apache web server will be used as the web server. It is expected that some kind of server module will be needed to enable direct access to the repositories.
http://httpd.apache.org/docs/2.0/ is the chief source of documentation of the Apache web server. Both CVS and Subversion are extensively documented. Information about CVS can be obtained by starting from http://ximbiot.com/cvs/wiki/index.php?title=Main_Page. For Subversion, a good starting point is http://subversion.tigris.org Excellent introductions and interface specifications for CGI are at http://hoohoo.ncsa.uiuc.edu/cgi/.