Code Monkey home page Code Monkey logo

git-repo-watcher's Introduction

Git Repo Watcher

A simple bash script to watch a git repository and pull upstream changes if available.

Requirements

Basically, it will work anywhere you can install Bash.

If something doesn't work, please let me know.

Usage

You only need the path to your git repository to start.

This will start a watcher that looks for changes every 10 seconds:

./git-repo-watcher -d "/path/to/your/repository"

The time interval can be changed by passing it to -i:

./git-repo-watcher -d "/path/to/your/repository" -i 60 #seconds

Make sure your local repository is tracking a remote branch, otherwise the script will fail.

Customizations

You can add your own logic to the file: git-repo-watcher-hooks

For example, you can start your build process in case of changes:

# $1 - Git repository name
# $2 - Branch name
# $3 - Commit details
change_pulled() {
    echo "Starting build for commit: $@"
    ./your-build-script.sh
}

If you have more than one repository you can pass a copy of the git-repo-watcher-hooks file like so:

./git-repo-watcher -d "/path/to/your/repository" -h "/path/to/your/hooks-file"

Private repositories

The script works with private repositories.

First configure a password cache with git config --global credential.helper "cache --timeout=60".
Make sure the timeout is greater than the time interval given to the script. Both are given as seconds.
The program will execute git fetch and ask for your login data. The script itself does not store passwords!

If you want it to run in the background as a daemon process, you have to execute git fetch beforehand.

Example code:

cd "/path/to/your/repository"
git config --global credential.helper "cache --timeout=60"
git fetch

# Checking exit code
if [[ $? -eq 1 ]]; then
    echo "Wrong password!" >&2
    exit 1
fi

# Disown process
./git-repo-watcher -d "/path/to/your/repository" > "/path/to/your/logfile.log" & disown

Windows 10

The easiest way is to install Git Shell, which also comes with bash.
The only thing you have to consider are the file separators. The Unix format should be used here:

C:\YourGitRepository โ†’ /C/YourGitRepository

It is a little more difficult with WSL.
This must first be installed and configured via the Windows Store. The file structure is also slightly different:

C:\YourGitRepository โ†’ /mnt/c/YourGitRepository

Tests

The test suite git-repo-watcher-tests is using the test framework shunit2, it will be downloaded automatically to your /tmp folder.
The script has no other dependencies and requires no internet connection.

The tests create several test git repositories in the folder: /tmp/git-repo-watcher.

A git user should be configured, otherwise the tests will fail.
With the following line you can check if this is the case:

git config --list

You can configure it as follows:

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

git-repo-watcher's People

Contributors

ngarindungu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.