#!/bin/sh
# this script prevents useless rebuilds after checking out sources from git, run
# it to omit build files regeneration, which otherwise require build tools being
# available
# see https://www.gnu.org/software/automake/manual/automake.html#CVS
# Usage: without arguments updates timestamps unconditionally
# with at least one argument (not analyzed) checks timestamps and skips
# updates if everything is up-to-date
# Note: this script sometimes doesn't work for out-of-tree builds, not sure
# exactly why
next_second()
{
echo Waiting for time change...
sleep 1
}
update()
{
echo "Updating $@"
touch "$@"
}
# checks whether timestamps are OK, OK looks like this:
# configure.ac
# < aclocal.m4
# < configure build-aux/config.h.in `find . -name Makefile.in -print`
everything_is_up_to_date()
{
if [ ! configure.ac -ot aclocal.m4 ]; then
echo 'configure.ac is not older than aclocal.m4'
return 1
fi
for file in configure build-aux/config.h.in \
`find . -name Makefile.in -print`; do
if [ ! aclocal.m4 -ot "$file" ]; then
echo "aclocal.m4 is not older than $file"
return 1
fi
done
return 0
}
if [ $# -gt 0 ]; then
if everything_is_up_to_date; then
exit 0
fi
fi
next_second
# aclocal-generated aclocal.m4 depends on locally-installed '.m4' macro files,
# as well as on 'configure.ac'
update aclocal.m4
next_second
# autoconf-generated configure depends on aclocal.m4 and on configure.ac
update configure
# so does autoheader-generated config.h.in
update build-aux/config.h.in
# and all the automake-generated Makefile.in files
update `find . -name Makefile.in -print`
# generated tags.c file should be newer than tags in data/vim/doc/app/
update src/tags.c
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master