Reposetup is a minimalist tool to manage repositories on a remote server. It requires only an ssh server and optionally a web server.
It is a simpler alternative to more feature complete tools like Gitolite if you want to host repositories on your own server.
Assuming you have a server with SSH installed and Apache with the
mod_userdir module enabled, the following will setup Reposetup to manage
Git repositories in the public_html/git directory inside your user home
directories.
-
Connect to your server
-
Copy the
reposetupscript to a directory which is part of $PATH when running a command over SSH, for example/usr/local/bin. ($HOME/binis likely not a good candidate because it is only added to $PATH when starting a shell) -
Create
/etc/reposetuprcwith the following content, replacing<yourserver>with the hostname of your server:# Path where repositories will be created REPO_BASE_DIR=$HOME/public_html/git # Repository url for read-write access REPO_RW_URL=$USER@<yourserver>:public_html/git/$REPO_NAME # Repository url for read-only access REPO_RO_URL=http://<yourserver>/~$USER/git/$REPO_NAME
Note: You can also create a reposetuprc file in the $HOME/.config directory
of each user.
Reposetup is designed to be used over SSH, from your workstation.
Let's say user sheldon wants to create a repository named example on the bazinga server:
$ ssh sheldon@bazinga reposetup create example
The "example" repository has been created. You can now clone it with:
git clone sheldon@bazinga:public_html/git/example
If you already have a local repository, you can push its content with:
git remote add origin sheldon@bazinga:public_html/git/example
git push -u origin master
The url for read-only access is:
http://bazinga/~sheldon/git/example
To list your repositories:
$ ssh sheldon@bazinga reposetup ls
example:
read-write url: sheldon@bazinga:public_html/git/example
read-only url: http://bazinga/~sheldon/git/example
To rename the repository:
$ ssh sheldon@bazinga reposetup rename example bbt
To delete the repository:
$ ssh sheldon@bazinga repository rm bbt
Delete the "bbt" repository? y
You might find it ironic that a tool to manage repositories is hosted on GitHub rather than self-hosted on a server I own.
The reason for this is that I am no sysadmin. I am not qualified to setup a secure, public-facing Git server. I use Reposetup on private servers, but hosting it on GitHub is simpler for me and probably safer for you.
That should not stop from hosting it yourself on your own server, that's the beauty of Git.