# NAME

Git::Helpers - Shortcuts for common Git commands

# VERSION

version 0.000020

# SYNOPSIS

    use Git::Helpers qw(
        checkout_root
        current_branch_name
        https_remote_url
        is_inside_work_tree
        remote_url
        travis_url
    );

    my $dir              = '/path/to/folder/in/git/checkout';
    my $root             = checkout_root($dir);
    my $current_branch   = current_branch_name();
    my $https_remote_url = https_remote_url();
    my $inside_work_tree = is_inside_work_tree();
    my $remote_url       = remote_url('upstream');
    my $travis_url       = travis_url();

## checkout\_root( $dir )

Gives you the root level of the git checkout which you are currently in.
Optionally accepts a directory parameter.  If you provide the directory
parameter, `checkout_root` will temporarily `chdir` to this directory and
find the top level of the repository.

This method will throw an exception if it cannot find a git repository at the
directory provided.

## current\_branch\_name

Returns the name of the current branch.

## https\_remote\_url( $remote\_name, $use\_current\_branch )

This is a browser-friendly URL for the remote, fixed up in such a way that
GitHub (hopefully) doesn't need to redirect your URL.

Turns git@github.com:oalders/git-helpers.git into https://github.com/oalders/git-helpers

Turns https://github.com/oalders/git-helpers.git into https://github.com/oalders/git-helpers

Defaults to using `origin` as the remote if none is supplied.

Defaults to master branch, but can also display current branch.

    my $current_branch_url = https_remote_url( 'origin', 1 );

## ignored\_files( $dir )

Returns an arrayref of files which exist in your checkout, but are ignored by
Git.  Optionally accepts a directory as an argument.  Defaults to ".".

Throws an exception if there has been an error running the command.

## is\_inside\_work\_tree

Returns `true` if `git rev-parse --is-inside-work-tree` returns `true`.
Otherwise returns `false`. This differs slightly from the behaviour of
`--is-inside-work-tree` in real life, since it returns `fatal` rather than
`false` if run outside of a git repository.

## remote\_url( $remote\_name )

Returns a URL for the remote you've requested by name.  Defaults to 'origin'.
Provides you with the exact URL which git returns. Nothing is fixed up for you.

    # defaults to 'origin'
    my $remote_url = remote_url();
    # $remote_url is now possibly something like one of the following:
    # git@github.com:oalders/git-helpers.git
    # https://github.com/oalders/git-helpers.git

    # get URL for upstream remote
    my $upstream_url = remote_url('upstream');

## travis\_url( $remote\_name )

Returns a [travis-ci.org](https://metacpan.org/pod/travis-ci.org) URL for the remote you've requested by name.
Defaults to 'origin'.

    # get Travis URL for remote named "origin"
    my $origin_travis_url = travis_url();

    # get Travis URL for remote named "upstream"
    my $upstream_travis_url = travis_url('upstream');

# AUTHOR

Olaf Alders <olaf@wundercounter.com>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2015-2019 by Olaf Alders.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.