<commit_before>Homerepo
=========

Homerepo manages a directory of git/svn/mercurial/cvs repositories.
It pulls changes to the repositories and if necessary builds them and updates
their installation.

Bugs and Pull Requests
=======================

This is just a small, rather thrown together script I created because I was in
need of it. If you find any bugs, do not hesitate and contact me @: nilsonholger
*(a)* hyve *(.)* org. If you feel like using a Pull Request (I suppose this will
never happen), that's also fine.

History
========

Sometimes you work in an environment where you have no rights to install the
software you are used to work with or need to get your job done. So you start to
pull sources of different tools, configure them to install into your $HOME,
build and install them. How do you keep these up to date? Going through all your
installed software is way to tedious for more than just a handful of tools.
But worry no more, this is exactly where homerepo comes in handy.

Setup
======

Just clone the repository and use it right away (or get the homerepo script
directly here: https://raw.github.com/nilsonholger/homerepo/master/homerepo).
For a more permament setup, just drop (or link) the homerepo script somewhere in
your *$PATH*.

At its first run, homerepo will create: ::

    .config/homerepo/
    .config/homerepo/config

The config will look like: ::

    # HOMEREPO CONFIG

    # base directory of repositories you want homerepo to manage
    _SRCDIR="$HOME/local/homerepo"

    # update order, if none is found, all subdirectories of $_SRSDIR will be
    # updated in alphabetical order
    #
    # format (empty lines are possible, NOTHING else, no comments etc.):
    # directory1
    # directory2
    # ...
    _UPDATE_ORDER="$HOME/.config/homerepo/order"

    # log file location
    _LOGFILE="$HOME/.cache/homerepo.log"

Please modify the just created config file to your liking. Personally, I prefer
to use *$HOME/local/homerepo* for my repositories, so it is already set as a
default.
I have setup all my local software to install to *$HOME/local* by using for
example: ::

    ./configure --prefix=$HOME/local
    cmake -DCMAKE_INSTALL_PREFIX=$HOME/local

If you choose to also do so, you could modify *$PATH* and other environment
variables accordingly, so other programs and tools will find these: ::

    export PATH="$PATH:$HOME/local/bin"
    export LIBRARY_PATH="$HOME/local/lib" # add e.g. lib32/lib64
    export LD_LIBRARY_PATH...
    export LD_RUN_PATH...
    export C_INCLUDE_PATH="$HOME/local/include"
    export CPLUS_INCLUDE_PATH=...
    ...

Usage
======

Running **homerepo** without any arguments gives: ::

    usage: /home/dkoester/local/bin/homerepo <command>

        list                            list update order of repositories
        upgrade [<repo1> [<repo...>]]   upgrade given (or all) repositories
        help                            guess what you're looking at...

So **homerepo upgrade** will upgrade all repositories either in the specified
order from *$_CONFDIR/order* or simply all existing directories found in
*$_SRCDIR*. To check the currently used order, use **homerepo list**.

Output and Logging
========

**homerepo** will print and log all output generated by e.g. **git pull** or
**make**/**make install** as well as show a summary of all operations at the end.
The log will reside in *$_LOGFILE* (defaults to *$HOME/.cache/homerepo.log*).
A short example of that output: ::

    +++ gcc [SUBVERSION]
    +++ llvm/tools/clang [GIT]
    !!! llvm/tools/clang [GIT] BUILD FAILED
    +++ llvm [GIT]
    === ack [GIT]
    === cloc [SUBVERSION]
    === dmenu [MERCURIAL]
    === git [GIT]
    +++ rxvt-unicode [CVS]

Final Notice<commit_msg>readme: reduce colon crazyness<commit_after>Homerepo
=========

Homerepo manages a directory of git/svn/mercurial/cvs repositories.
It pulls changes to the repositories and if necessary builds them and updates
their installation.

Bugs and Pull Requests
=======================

This is just a small, rather thrown together script I created because I was in
need of it. If you find any bugs, do not hesitate and contact me @: nilsonholger
*(a)* hyve *(.)* org. If you feel like using a Pull Request (I suppose this will
never happen), that's also fine.

History
========

Sometimes you work in an environment where you have no rights to install the
software you are used to work with or need to get your job done. So you start to
pull sources of different tools, configure them to install into your $HOME,
build and install them. How do you keep these up to date? Going through all your
installed software is way to tedious for more than just a handful of tools.
But worry no more, this is exactly where homerepo comes in handy.

Setup
======

Just clone the repository and use it right away (or get the homerepo script
directly here: https://raw.github.com/nilsonholger/homerepo/master/homerepo).
For a more permament setup, just drop (or link) the homerepo script somewhere in
your *$PATH*.

At its first run, homerepo will create::

    .config/homerepo/
    .config/homerepo/config

The config will look like::

    # HOMEREPO CONFIG

    # base directory of repositories you want homerepo to manage
    _SRCDIR="$HOME/local/homerepo"

    # update order, if none is found, all subdirectories of $_SRSDIR will be
    # updated in alphabetical order
    #
    # format (empty lines are possible, NOTHING else, no comments etc.):
    # directory1
    # directory2
    # ...
    _UPDATE_ORDER="$HOME/.config/homerepo/order"

    # log file location
    _LOGFILE="$HOME/.cache/homerepo.log"

Please modify the just created config file to your liking. Personally, I prefer
to use *$HOME/local/homerepo* for my repositories, so it is already set as a
default.
I have setup all my local software to install to *$HOME/local* by using for
example::

    ./configure --prefix=$HOME/local
    cmake -DCMAKE_INSTALL_PREFIX=$HOME/local

If you choose to also do so, you could modify *$PATH* and other environment
variables accordingly, so other programs and tools will find these::

    export PATH="$PATH:$HOME/local/bin"
    export LIBRARY_PATH="$HOME/local/lib" # add e.g. lib32/lib64
    export LD_LIBRARY_PATH...
    export LD_RUN_PATH...
    export C_INCLUDE_PATH="$HOME/local/include"
    export CPLUS_INCLUDE_PATH=...
    ...

Usage
======

Running **homerepo** without any arguments gives::

    usage: /home/dkoester/local/bin/homerepo <command>

        list                            list update order of repositories
        upgrade [<repo1> [<repo...>]]   upgrade given (or all) repositories
        help                            guess what you're looking at...

So **homerepo upgrade** will upgrade all repositories either in the specified
order from *$_CONFDIR/order* or simply all existing directories found in
*$_SRCDIR*. To check the currently used order, use **homerepo list**.

Output and Logging
========

**homerepo** will print and log all output generated by e.g. **git pull** or
**make**/**make install** as well as show a summary of all operations at the end.
The log will reside in *$_LOGFILE* (defaults to *$HOME/.cache/homerepo.log*).
A short example of that output::

    +++ gcc [SUBVERSION]
    +++ llvm/tools/clang [GIT]
    !!! llvm/tools/clang [GIT] BUILD FAILED
    +++ llvm [GIT]
    === ack [GIT]
    === cloc [SUBVERSION]
    === dmenu [MERCURIAL]
    === git [GIT]
    +++ rxvt-unicode [CVS]

Final Notice
{'fraction_non_alphanumeric': 0.10153846153846154, 'fraction_numerical': 0.0018729096989966556, 'mean_word_length': 3.392479435957697, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1290082', 'n_tokens_mistral': 2229, 'n_tokens_neox': 2082, 'n_words': 942}