I assume that you have only one application and you keep it separate from web2py: $HOME/workspace/my-project/src <-- your application folder $HOME/workspace/my-project/web2py <-- web2py folder
To upgrade web2py to a desired version you can run then the following script. It pulls the changes from the repository and applies them to web2py folder. The it copies the global configuration files (which has been overwritten during update) from the application src folder (yaml files are only needed for GAE apps). Finally, it creates symbolic link to your application from within the web2py folder. #!/bin/bash TAG="R-1.99.7" cd $HOME/workspace/my-project # update files from repo cd web2py hg pull hg update -C $TAG cd .. # copy config files cp -p src/private/*.yaml web2py/. cp -p src/private/routes.py web2py/. # link to my application if [ ! -d "web2py/applications/init" ] then cd web2py/applications/ ln -s ../../src init fi Notice that your application will be linked as init. If you have more than one application per web2py instance, adjust the script to link all applications. Also, you will need mercurial installed to run the script (sudo apt-get install mercurial). And one more thing, this is perfectly normal that you need to mange the changes carefully. So there is no need to be bitter. BTW, there was an attempt by Jose to package web2py for Debian. It's pretty good but stays a bit behind the upstream: http://packages.debian.org/sid/python-web2py