Gitolite: Difference between revisions

From Alpine Linux
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Setting up Gitolite ==
[https://gitolite.com/ Gitolite] is a wrapper around a base git installation which facilitates the secure management of project repositories and of the user privileges governing access to those repositories.
 
== Installation ==
Install the package that contains Gitolite.
Install the package that contains Gitolite.
{{Cmd|apk add gitolite git}}
{{Cmd|apk add gitolite git}}
Line 5: Line 7:
=== In your workstation set up new public keys ===
=== In your workstation set up new public keys ===
Running this command will create a new pair of private and public key.
Running this command will create a new pair of private and public key.
{{Cmd|ssh-keygen -N '' -f "${HOME}/.ssh/id_rsa"}}
{{Cmd|ssh-keygen -N "" -f ~/.ssh/id_rsa}}
Create a copy of the public key.
Create a copy of the public key.
{{Cmd|cp ${HOME}/.ssh/id_rsa.pub ${HOME}/.ssh/YOUR_USERNAME.pub}}
{{Cmd|cp ~/.ssh/id_rsa.pub ~/.ssh/${YOUR_USERNAME}.pub}}
Send the public key to your server by running the command shown below.
Send the public key to your server by running the command shown below.
{{Cmd|scp ${HOME}/.ssh/YOUR_USERNAME.pub root@YOUR_SERVER_IP:/var/lib/git/YOUR_USERNAME.pub}}
{{Cmd|scp ~/.ssh/${YOUR_USERNAME}.pub root@${YOUR_SERVER_DOMAIN_OR_IP}:/var/lib/git/${YOUR_USERNAME}.pub}}


=== In your server set up Gitolite ===
=== In your server set up Gitolite ===
This command will setup Gitolite using the public key you just sent to the server.
This command will setup Gitolite using the public key you just sent to the server.
{{Cmd|su git -c "gitolite setup -pk /var/lib/git/YOUR_USERNAME.pub"}}
{{Warning|There is no need to add password to the default git account that was created automatically by the system. We run git via su git.}}
{{Warning|There is no need to add password to the default git account that was created automatically by the system. We run git via su git.}}
{{Cmd|su git -c "gitolite setup -pk /var/lib/git/${YOUR_USERNAME}.pub"}}


=== In your workstation set up Gitolite ===
=== In your workstation set up Gitolite ===
Clone the .git directory to administrate Gitolite outside a server.
In your workstation clone the .git directory anywhere you want (preferably your home directory) to administrate Gitolite outside a server.
{{Cmd|git clone git@${SERVERIP}:gitolite-admin}}
{{Cmd|git clone git@${YOUR_SERVER_DOMAIN_OR_IP}:gitolite-admin ~/gitolite-admin}}
Use your favorite text editor and open the file ${HOME}/gitolite-admin/conf/gitolite.conf
Use your favorite text editor and open the file ~/gitolite-admin/conf/gitolite.conf
{{Cmd|vim ${HOME}/gitolite-admin/conf/gitolite.conf}}
{{Cmd|vim ~/gitolite-admin/conf/gitolite.conf}}
Add to that file the name of a git repository which Gitolite will manage. It should look something like this:
Add to that file the name of a git repository which Gitolite will manage. It should look something like this:
{{Cat|${HOME}/gitolite-admin/conf/gitolite.conf|<nowiki>
{{Cat|~/gitolite-admin/conf/gitolite.conf|<nowiki>
repo gitolite-admin
repo gitolite-admin
RW+ = YOUR_USERNAME
RW+ = YOUR_USERNAME
Line 32: Line 34:
}}
}}
Make commit of what you just changed.
Make commit of what you just changed.
{{Cmd|git -C ${HOME}/gitolite-admin/ commit -am "My new custom repository."}}
{{Cmd|git -C ~/gitolite-admin/ commit -am "My new custom repository."}}
Push the changes to the server.
Push the changes to the server.
{{Cmd|git -C ${HOME}/gitolite-admin/ push}}
{{Cmd|git -C ~/gitolite-admin/ push}}


=== In your workstation, if you don't have a .git, create one ===
=== In your workstation, if you don't have a git repository, create one ===
Initialize a .git
Create a dotfiles directory.
{{Cmd|git -C ${HOME} init}}
{{Cmd|mkdir ~/dotfiles/}}
Initialize a git repository in the dotfiles directory.
{{Cmd|git -C ~/dotfiles/ init}}
We will add the remote for this new .git. In this case we point the server in which Gitolite was installed, and the repository name we sent before by pushing data via gitolite-admin.
We will add the remote for this new .git. In this case we point the server in which Gitolite was installed, and the repository name we sent before by pushing data via gitolite-admin.
{{Cmd|git -C ${HOME} remote add origin git@YOUR_SERVER_IP:YOUR_GIT_REPO}}
{{Cmd|git -C ~/dotfiles/ remote add origin git@${YOUR_SERVER_DOMAIN_OR_IP}:${YOUR_GIT_REPO} }}
Add some files to your new repository.
Add some files to your new repository.
{{Cmd|git -C ${HOME} add ${HOME}/.bashrc}}
{{Cmd|echo "hello world" > ~/dotfiles/testfile}}
{{Cmd|git -C ~/dotfiles/ add ~/dotfiles/testfile}}
Create a commit.
Create a commit.
{{Cmd|git -C ${HOME} commit -am "This is my first commit."}}
{{Cmd|git -C ~/dotfiles/ commit -am "This is my first commit."}}
Push the files to the server. In this case it's being pushed to the server in which Gitolite was installed.
Push the files to the server. In this case it's being pushed to the server in which Gitolite was installed.
{{Cmd|git -C ${HOME} push --set-upstream origin master}}
{{Cmd|git -C ~/dotfiles/ push --set-upstream origin master}}


[[Category:Server]]
[[Category:Server]]
[[Category:Git]]
[[Category:Git]]

Latest revision as of 08:05, 10 September 2019

Gitolite is a wrapper around a base git installation which facilitates the secure management of project repositories and of the user privileges governing access to those repositories.

Installation

Install the package that contains Gitolite.

apk add gitolite git

In your workstation set up new public keys

Running this command will create a new pair of private and public key.

ssh-keygen -N "" -f ~/.ssh/id_rsa

Create a copy of the public key.

cp ~/.ssh/id_rsa.pub ~/.ssh/${YOUR_USERNAME}.pub

Send the public key to your server by running the command shown below.

scp ~/.ssh/${YOUR_USERNAME}.pub root@${YOUR_SERVER_DOMAIN_OR_IP}:/var/lib/git/${YOUR_USERNAME}.pub

In your server set up Gitolite

This command will setup Gitolite using the public key you just sent to the server.

Warning: There is no need to add password to the default git account that was created automatically by the system. We run git via su git.


su git -c "gitolite setup -pk /var/lib/git/${YOUR_USERNAME}.pub"

In your workstation set up Gitolite

In your workstation clone the .git directory anywhere you want (preferably your home directory) to administrate Gitolite outside a server.

git clone git@${YOUR_SERVER_DOMAIN_OR_IP}:gitolite-admin ~/gitolite-admin

Use your favorite text editor and open the file ~/gitolite-admin/conf/gitolite.conf

vim ~/gitolite-admin/conf/gitolite.conf

Add to that file the name of a git repository which Gitolite will manage. It should look something like this:

Contents of ~/gitolite-admin/conf/gitolite.conf

repo gitolite-admin RW+ = YOUR_USERNAME repo testing RW+ = @all repo YOUR_GIT_REPO RW+ = YOUR_USERNAME

Make commit of what you just changed.

git -C ~/gitolite-admin/ commit -am "My new custom repository."

Push the changes to the server.

git -C ~/gitolite-admin/ push

In your workstation, if you don't have a git repository, create one

Create a dotfiles directory.

mkdir ~/dotfiles/

Initialize a git repository in the dotfiles directory.

git -C ~/dotfiles/ init

We will add the remote for this new .git. In this case we point the server in which Gitolite was installed, and the repository name we sent before by pushing data via gitolite-admin.

git -C ~/dotfiles/ remote add origin git@${YOUR_SERVER_DOMAIN_OR_IP}:${YOUR_GIT_REPO}

Add some files to your new repository.

echo "hello world" > ~/dotfiles/testfile

git -C ~/dotfiles/ add ~/dotfiles/testfile

Create a commit.

git -C ~/dotfiles/ commit -am "This is my first commit."

Push the files to the server. In this case it's being pushed to the server in which Gitolite was installed.

git -C ~/dotfiles/ push --set-upstream origin master