From 4ead9be4468d8d58c027bf6e6616e3b4d6e727eb Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Thu, 22 Aug 2019 18:30:24 +0200 Subject: Complete re-structuring so it's easier to install MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- .emacs.d/pre-push | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 .emacs.d/pre-push (limited to '.emacs.d/pre-push') diff --git a/.emacs.d/pre-push b/.emacs.d/pre-push new file mode 100755 index 0000000..dcc8dce --- /dev/null +++ b/.emacs.d/pre-push @@ -0,0 +1,79 @@ +#!/bin/sh +# Copyright (C) 2017-2019 Miquel Sabaté Solà +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Most of the code is taken from the default pre-push.sample file. + +# From the documentation, if the foreign ref does not yet exist the +# will be 40 0. +z40=0000000000000000000000000000000000000000 + +# The path where the files are to be stored on the server. +__mssola_remote_path=/home/mssola/static + +# Safely join paths. +__mssola_join_path() { + local IFS="/"; echo "$*"; +} + +# This function does the actual syncing. It takes one argument, which is the +# file to be synced. Note that this function assumes that the given file is +# under the "emacs" directory. +__mssola_sync_cheato() { + path=$(realpath .) + + src=$(__mssola_join_path $path "emacs" $1) + dst=$(__mssola_join_path "cheato.mssola.com:$__mssola_remote_path" $1) + + echo "Syncing $(__mssola_join_path emacs $1)" + rsync $src $dst +} + +# Copy the files that I want to my server. +__mssola_sync() { + __mssola_sync_cheato "init.html" + __mssola_sync_cheato "org.css" +} + +# This block iterates through all the given info provided by git. If there is +# a change on a GNU Emacs file, then it needs to by synced with my server. +while read local_ref local_sha remote_ref remote_sha +do + if [ "$local_sha" = $z40 ] + then + # Handle delete + : + else + if [ "$remote_sha" = $z40 ] + then + # New branch, examine all commits + range="$local_sha" + else + # Update to existing branch, examine new commits + range="$remote_sha..$local_sha" + fi + + # Commits afecting GNU Emacs are prefixed with "emacs: ". It's a + # convention that I always follow. + commit=`git rev-list -n 1 --grep '^emacs:' "$range"` + if [ -n "$commit" ] + then + #__mssola_sync + exit 0 + fi + fi +done + +exit 0 -- cgit v1.2.3