The ?rst task in the project is to develop a sane system to store change logs and versions of ?les. The simplest approach is to create a "dot" directory in the location of the ?le to be versioned. For instance, create a directory called .uevcs whenever the add command is called and no ?les are currently versioned in the current working directory. In other words, check for the existence of .uevcs when the add command is called, and create the version infrastructure if it does not. When you call add, the script should prompt for a ChangeLog entry. A typical ChangeLog entry might look something like:
2001-01-15 23:02:01 J Shane Culpepper
reviewed by: Michael Engber
* src/nautilus-application.c: (nautilus_application_startup):
* src/nautilus-first-time-druid.c: (druid_finished):
* src/nautilus-main.c: (main):
Fix for bug #1555. There is already an error dialog but there was an infinite loop problem hiding it. If the first time druid failed to create. nautilus, etc it would just run over and over again.
The exact format is up to you but should include date, time stamp, and version information. After the ?le has been added to the repository, implement the show command, to list the change history for the ?le. At this point, you should make some design decisions. Are there any other commands or options your program should support that are not in the required set? How do popular version control systems such as rcs, subversion or git work? Should I include an interactive menu system in the script in addition to the command line shortcuts? Remember, you will be doing a demo of your system and a code walk through in the labs Week 10-12. Your system should support multiple ?les at once and standard metacharacter expansion on the command line. For example, the command uevcs -r add *.c should recursively add all ?les with the extension .c.
Once you can add a ?le to the repository, you should now add the inverse command get. The get command should pull the ?le from the repository and create a copy in the current working directory. If the ?le already exists, then you should prompt the user if they wish to overwrite the current version.