Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 77 lines (61 sloc) 2.146 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
#!/usr/bin/perl
use strict;
use warnings;

# Clearly you don't need a program to make one measly symlink, but the git
# describe command involved in generating the VERSION string is a bit fiddly.

use Getopt::Long;
use FindBin;

# meant to be run from the root of the gitolite tree, one level above 'src'
BEGIN { $ENV{GL_BINDIR} = $FindBin::RealBin . "/src"; }
BEGIN { $ENV{GL_LIBDIR} = "$ENV{GL_BINDIR}/lib"; }
use lib $ENV{GL_LIBDIR};
use Gitolite::Common;

=for usage
Usage (from gitolite clone directory):

./install
to run gitolite using an absolute or relative path, for example
'src/gitolite' or '/full/path/to/this/dir/src/gitolite'

./install -ln [<dir>]
to symlink just the gitolite executable to some <dir> that is in
$PATH. <dir> defaults to $HOME/bin if <dir> not specified. <dir> is
assumed to exist; gitolite will not create it.

Please provide a full path, not a relative path.

./install -to <dir>
to copy the entire 'src' directory to <dir>. If <dir> is not in
$PATH, use the full path to run gitolite commands.

Please provide a full path, not a relative path.

Simplest use, if $HOME/bin exists and is in $PATH, is:

git clone -b g3 git://github.com/sitaramc/gitolite
gitolite/install -ln

# now run setup
gitolite setup -pk /path/to/YourName.pub
=cut

my ( $to, $ln, $help, $quiet );

GetOptions(
    'to=s' => \$to,
    'ln:s' => \$ln,
    'help|h' => \$help,
    'quiet|q' => \$quiet,
);
usage() if $to and $ln or $help;
$ln = "$ENV{HOME}/bin" if defined($ln) and not $ln;
for my $d ($ln, $to) {
    if ($d and not -d $d) {
        print STDERR "FATAL: '$d' does not exist.\n";
        usage();
    }
}

chdir($ENV{GL_BINDIR});
my $version = `git describe --tags --long --dirty=-dt`;

if ($to) {
    _mkdir($to);
    system("cp -a * $to");
    _print( "$to/VERSION", $version );
} elsif ($ln) {
    ln_sf( $ENV{GL_BINDIR}, "gitolite", $ln );
    _print( "VERSION", $version );
} else {
    say "use the following full path for gitolite:";
    say "\t$ENV{GL_BINDIR}/gitolite";
    _print( "VERSION", $version );
}
Something went wrong with that request. Please try again.