Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have ssh access to many servers where I have no root privileges. Do you know of any version control utility that can work with remote ssh repositories whichout installing anything on the remote server?

I have tried a bare git repository folder, but it seems to demand some script/binary/installation on the server. I also dont like git because it is not very portable. The portable versions are made of too many files

share|improve this question
If you think that git is bad in terms of number of files then you won't be happy with most VCS tools. – Ignacio Vazquez-Abrams May 3 '10 at 8:12

Fossil is a distributed source control system which compiles on Linux, Windows, or Mac OS X down to a single binary. Repositories come with an integrated bug tracker and wiki automatically, and the single executable can function as a hosting server so the repository can be accessed remotely.

Fossil is a second project pioneered by D. Richard Hipp, the original creator of SQLite (Fossil uses SQLite as it's backing store, so the whole repository lives in a single portable file).

share|improve this answer

It looks like Bazaar can use an SFTP-based “dumb server” (Bazaar not required on the server side) for read and write access.

Note: I have never used Bazaar, I only poked around in its documentation.

share|improve this answer
Yup. See here. – Nathan Osman Jul 22 '10 at 2:22

As Chris Johnsen points out, Bazaar can upload the repository data to a server using different protocols, SFTP among them.

Actually, the way this works is this: You create a repository/branch on your local machine and user Bazaar to track all changes. Bazaar stores all its information in a directory named ".bzr" in the root directory for that branch. You must upload the repository/branch to your server using your SSH access. Then, any latter changes commited to the branch are automatically uploaded to the server.

To do this, you must follow these steps:

  1. In the directory where the files whose changes you want to track, create a new branch.

    bzr init
  2. Add the files you want to track to current branch, so that they are "version-controlled" by Bazaar.

    bzr add file1 file2 directory1 directory2 ...
  3. Make your first commit to the branch. This first commit is required before you can upload the branch to your server. You should read the documentation or use Bazaar's help for learning how to use the "commit" command (and how to enter commit messages).

    bzr commit
  4. Upload the branch to your server using your SSH access. Bazaar will automatically prompt for your password. Alternatively, you could set up a public RSA key to avoid the need of entering your password every time.

    bzr push sftp://user@domain:port/branch_location_on_server

    You can omit the port if the SSH server is listenning on port 21 (which is the default). If you want the branch to be locate in your home directory, you should specify the *branch_location_on_server* starting with "~/".

Any latter commits you do will be automatically uploaded to that location on the server.

In addition, you can also do "commit"s when your machine is not connected to the server by passing the "--local" option to the "commit" command, or by unbinding and binding the branch (bzr unbind/*bzr bind*)

If you want to download that branch, you can do a "checkout":

bzr co sftp://user@domain:port/branch_location_on_server
share|improve this answer

use rsync (oh, wait you would need rsync on the server as well :)) to just store the mercurial / git / bzr repos from your local machine onto the servers. you then have to download the whole repository next to your working copy and then you can do a merge.

to have something usefull i would recommend installing mercurial on the server in your home, maybe that local installation is less "complex" than the git installation (which you could also install in your home btw).

share|improve this answer
Thanks! But still rsync needs an installation on the server. I am looking for a solution with no root access – SystematicFrank May 3 '10 at 22:20
i said that rsync needs to be on the server as well. and i also said: you do not need root access to "install" anything on a machine, as long as you can write files and are allowed to execute them. – akira May 4 '10 at 4:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .