GITSSH2

Git Web Interface Client to manage all your git repositories hosted on different servers in one place.

What is?

GitSSH2 is an open source Git web interface client built on Symfony's PHP framwork. It can connect to remote servers over ssh and run git commands such as commit, branch, push, pull, etc.

Projects

Have multiple git repositories grouped under a single project.

File Listing

List all files on a remote server project. Not just the files under version control.

Issues

Use the systems issue tracker, or integrate with Github or Gitlab issue tracker

User Control Access

Create users with different access controls. Have different users commit to the same git repo but still have different author names

Simple Commit Interface

Don't scare new users with all options showing on one screen

Commit History

See history for any branch and search commits by message, author or content

Screen Shots

Other Features

  • Easily switch between repositories in a project
  • No need to stash. Already done for you
  • Create branches directly from issues
  • Open as may windows as you like. It is a web app after all
  • Resolve merge commits with a single click
  • Push, pull, and fetch from remote repositories
  • View unsynced commits
  • Easily create, delete and rename branches, and remotes
  • Undo commits
  • View Diffs in the browser

Installation

1. Requirements

  • php > 5.6 (mcrypt) | php 7.1 (openssl)
  • mysql or mariadb
  • webserver ( apache, nginx, php server)
  • Git install on command line for server/computer with repository

2. Installing the GIT Web Interface Version Control System

When it comes to installing, you have the following options.

If you don't have Composer yet, download it following the instructions on http://getcomposer.org/ or just run the following command:

$ curl -s http://getcomposer.org/installer | php

Create a new folder somewhere under your web server root directory ( eg /var/www/gitssh2/) and run the following command:

php -d memory_limit=-1 composer.phar create-project -s dev sshversioncontrol/git-web-client

If composer is install globally then just run the command:

$ composer create-project -s dev sshversioncontrol/git-web-client

Composer will install the project and all its dependencies under the current directory.

You can also download a zip of the GIT Web Interface Client and unpack it somewhere under your web server root directory. You will still need to run composer to download other dependencies.

$ curl -s http://getcomposer.org/installer | php $ php -d memory_limit=-1 composer.phar install
or if composer is install globally
$ composer install

You will be prompted to enter in the database configuration. Please check the app/config/parameters.yml to make sure that the database settings are correct

3. Checking your System Configuration

Execute the check.php script from the command line, to check your system config:

$ php app/check.php

The script returns a status code of 0 if all mandatory requirements are met, 1 otherwise.

4. Install the database

If the database is not already created run:

$ php app/console doctrine:database:create

To install the schema and inital data run the following command:

$ php app/console version:install

To create a new administrator run the following command:

$ php app/console version:admin:create

5. Web Server

Below are examples of 3 different web servers configurations that you can use:

The minimum configuration to get the application running under Apache is:

<VirtualHost *:80> ServerName domain.tld ServerAlias www.domain.tld DocumentRoot /var/www/project/web <Directory /var/www/project/web> AllowOverride All Order Allow,Deny Allow from All </Directory> # uncomment the following lines if you install assets as symlinks # or run into problems when compiling LESS/Sass/CoffeScript assets # <Directory /var/www/project> # Options FollowSymlinks # </Directory> ErrorLog /var/log/apache2/project_error.log CustomLog /var/log/apache2/project_access.log combined </VirtualHost>

The minimum configuration to get the application running under Nginx is:

server { server_name domain.tld www.domain.tld; root /var/www/project/web; location / { # try to serve file directly, fallback to app.php try_files $uri /app.php$is_args$args; } # DEV # This rule should only be placed on your development environment # In production, don't include this and don't deploy app_dev.php or config.php location ~ ^/(app_dev|config)\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; # When you are using symlinks to link the document root to the # current version of your application, you should pass the real # application path instead of the path to the symlink to PHP # FPM. # Otherwise, PHP's OPcache may not properly detect changes to # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 # for more information). fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; } # PROD location ~ ^/app\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; # When you are using symlinks to link the document root to the # current version of your application, you should pass the real # application path instead of the path to the symlink to PHP # FPM. # Otherwise, PHP's OPcache may not properly detect changes to # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 # for more information). fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; # Prevents URIs that include the front controller. This will 404: # http://domain.tld/app.php/some-path # Remove the internal directive to allow URIs like this internal; } error_log /var/log/nginx/project_error.log; access_log /var/log/nginx/project_access.log; }

If you just want to test out the application you can use the default php webserver. You will not need to configure anything, but this will run slower:

$ php app/console server:run