phpEasyVCS is a simple version control system (VCS) and WebDAV server running with PHP
Original project webpage: http://phpeasyvcs.sourceforge.net/
The current fork states v1.3. I have incountered a few bugs with v2.0, it's why I decided to start a fork from there, and not from the latest version available. Of course, on the long run, I would like to continue to improve and develop around this, and continue to update the project, started in .
phpEasyVCS is a simple version control system (VCS) and WebDAV server with minimal hosting requirements:
- PHP 5.2+
No database is needed.
Files can be viewed and uploaded with a browser or by WebDAV.
Copy phpEasyVCS to a directory on your server, e.g. easyvcs
.
Browse to http(s)://your.server/easyvcs-dir/index.php
(replace your.server
and easyvcs-dir
with your server and installation directory) and fill out the settings form.
You can also create additional users on the Users tab.
Depending on your server settings, the authorization header might not reach PHP. In case of Apache you can add the following rewrite rule to your .htaccess
:
RewriteBase /
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
You can also create additional repositories by
- creating a new directory in the data folder (on the same level as the default folder)
- editing the user(s) to give them access to the additional repository - you have to reenter the password for this
Independent of the access type the user has to identify himself with his user name and password. If the user has access to multiple repositories, he must prefix the user name with the repository name and a backslash, e.g. "specialrepository\max", otherwise it is not sure, into which repository he will be logged in.
Browse to http(s)://your.server/easyvcs-dir/index.php
(replace your.server
and easyvcs-dir
with your server and installation directory).
You can browse the VCS, create tags to browse the VCS at a specific date, view versions, revert a file to a version, etc.
The web access will work
- with Javascript switched off (no syntax highlighting, page reload on many actions),
- with Javascript activated,
- with Javascript and Java plugin activated and the Java applet loaded you can upload whole directories and get progress bars during upload.
To enable Java and experience the least warnings possible:
- Download and install Java from java.com,
- in your favorite browser (which should support the Java plugin), go to the plugins page (e.g. in Firefox Tools/Add-ons/Plugins) and make sure that the Java plugin will either Always Activate or Ask to Activate,
- open the Java Plugin Control Panel (Windows: in Start/Programs, Linux Gnome: search for "java" in your Gnome menu) and set Security/Security Level to medium and add your phpEasyVCS web site URL to the website exceptions. Using the navigation item Profile the user can change his password and switch the repository, if he has access to multiple repositories.
Use http(s)://your.server/easyvcs-dir/webdav.php
for WebDAV access. The actual syntax may vary depending on your operating system and WebDAV program.
The root level of the WebDAV drive shows at least the directory current, which represents the currently saved files. You will also see the tags created in the web interface, which represent read-only views of your VCS at a specific time. Additionally you can view the VCS at a specific point in time by manually specifying a date and time in the format YYYY-MM-DD
or YYYY-MM-DDTHH:MM
, e.g. http://your.server/easyvcs-dir/webdav.php/2011-01-01
or http://your.server/easyvcs-dir/webdav.php/2011-01-01T16:00
(this might not work with your WebDAV client).
Enter the following URL in Nautilus or Caja: dav://your.server/easyvcs-dir/webdav.php
If this does not work, connect explicitely by use of its menu File/Connect to Server and set Server to your.server, type to WebDAV (HTTP) or Secure WebDAV (HTTPS), path to easyvcs-dir/webdav.php and enter your user name and password.
You can also connect using Gnome Commander: set type to WebDAV, server to your.server and remote directory to /easyvcs-dir/webdav.php.
Or install davfs2 and mount the WebDAV, e.g.:
sudo mkdir /media/easyvcs
sudo mount -t davfs http://your.server/easyvcs-dir/webdav.php /media/easyvcs
You probably need to add options like -o rw,user,uid=myusername
to be able to write, too.
Preparation:
Download and install KB907306 for web folders
To use basic authentication, set the DWORD
registry entry UseBasicAuth
in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
to 1
and restart Windows.
Goto explorer - Tools - Map Network Drive - Connect to a Web site and enter http://your.server/easyvcs-dir/webdav.php
as URL
Or goto explorer - Tools - Map Network Drive and directly add http://your.server/easyvcs-dir/webdav.php
as folder (this only seems to work if your phpEasyVCS installation requires no authentication)
Preparation:
Go to Settings in your phpEasyVCS instance and make sure that authentication method is Digest.
Or, if you really want to use Basic authentication, follow the steps in KB841215: Set the DWORD
registry entry BasicAuthLevel
in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
to 2
and restart Windows.
Goto explorer - Map Network Drive - Connect to a Web site and enter http://your.server/easyvcs-dir/webdav.php
as URL.
TotalCommander has a WebDAV plugin.
BitKinex - All-in-one FTP/SFTP/HTTP/WebDAV Client (Freeware)
When setting up the connection you need to specify first the server and then set easyvcs-dir/webdav.php
as default directory.
NetDrive (free for home use): You can assign a drive letter to the WebDAV drive and use it like a local drive.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Initiated in 2011.
- synchronization page to merge and synchronize a remote directory with a local directory
- uses Mergely to merge local/remote files
- uses CodeMirror, syntax highlighting included for c, c++, c#, java, groovy, html, css, less, sass, scss, javascript, php, python, properties files, sql, xml
- REST interface improved (stores user name, comment for DELETE and PUT as parameter)
- better WebDAV compliance (tested with litmus test suite - http://www.webdav.org/neon/litmus/), now only the following incompatibilities remain:
- overwriting (PUT, MKCOL, MOVE, COPY) collections (folders) with non-collections and vice versa is conceptually not possible
- setting properties (PROPPATCH) is not supported and will always return 403 (Forbidden)
- because of the better WebDAV compliance the Teamdrive client (http://www.teamdrive.com) now works with phpEasyVCS
- basic authentication bug corrected
- better compatibility with Windows (strptime function)
- upload in Chrome corrected
- added setting for site title
- added profile page for users to allow them to change password and timezone and switch repositories
- (Ticket #10: correct basic authentication in trunk)
- (Ticket #12: compatibility with PHP 5.1)
- Ticket #6: users.php corrected to start with <?php instead of <?
- Ticket #7: added csv file type
- avoid PHP warning messages (e.g. Ticket #8)
- dialogs will now open on top in newer versions of Chrome, too
- simple file inputs for upload will only be hidden after applet is successfully loaded
- new user management
- support for read only access
- multiple improvements for the web interface:
- download multiple files and directories with the Java applet
- upload zips extracting them on the server without Java applet
- download multiple files and directories as zip without Java applet
- delete, copy and move multiple files on the server
- pure CSS collapsible directory tree for copy/move
- easily undelete files and directories
- other small fixes and enhancements
- corrects an problem with Windows' directory separator (backslash) (if you have files with backslashes on your non-Windows server, you can delete them with cleanup.php)
- action menu instead of (rather random) links
- upload up to 5 files at once
- upload multiple files and even directories with a Java applet
- allow copy/move of any file/directory version
- (re)create directory on add file, revert file and add directory, if necessary
- corrected difference view
- corrected difference view
- show MD5 in file name tool tips
- support open ranges with GET request (Gnome Commander)
- small GUI corrections
- difference view
- workaround for some clients' three step approach on upload (delete, create empty file, upload): deletions and empty/one-byte files are removed within a short time automatically
- save date format in settings
- improved GUI
- use correct directory ('default') for data, when no or external authorization
- show quick view when browsing tags
- quick view for more file types: xml
- improved GUI
- show saved user name (instead of 'admin') in settings
- optionally show deleted files in web GUI
- phpEasyVCS now handles the authorization itself - no need to configure Apache
- GUI for settings - automatically called for setup
- improved UI
- improved handling of temporary files (e.g. created by MS Office)
Amazing original work by Martin Vlcek.
Work available under GPLv3 license.
phpEasyVCS uses some classes from the PEAR project, which are licensed under the PHP license, see license_PEAR.txt
The following is a list of problems with various WebDAV clients:
- With Nautilus you get an error message when moving/renaming (this is a Nautilus bug). But the move is executed correctly and you will see it after a refresh (F5).
- Windows XP: opening a file from a WebDAV drive, which is NOT mapped to a drive letter, will only work, if the opening program is WebDAV aware, like Microsoft Word.
- Windows 7: Although connecting to a WebDAV drive without authentication by http works perfectly, connecting to the same WebDAV drive with basic authentication set up only displays grayed out entries, clicking on a file or folder will do nothing.
phpEasyVCS is the only VCS which
- is implemented in pure PHP,
- stores the data in the file system, and
- offers WebDAV access.
As to my knowledge there is no other VCS even offering two of these features.