aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmrlog70
-rwxr-xr-xrcommit4
2 files changed, 72 insertions, 2 deletions
diff --git a/mrlog b/mrlog
new file mode 100755
index 0000000..e279939
--- /dev/null
+++ b/mrlog
@@ -0,0 +1,70 @@
+#!/usr/bin/env bash
+#
+# Builds a unified list of commit logs from one or more Git repositories, using
+# mr(1).
+#
+# Accepts git-log(1) parameters, like
+#
+# --since=<date>
+# --after=<date>
+#
+# Examples:
+#
+# mrlog --since='1 day ago' --date=relative
+# watch -n 120 "mrlog --since='1 week ago' --date=relative"
+#
+
+# Parameters
+DIRNAME="`dirname $0`"
+BASENAME="`basename $0`"
+MODE="$1"
+
+# Wrapper around git-log(1) to run in a single repository
+function _git_log_wrapper {
+ # Repository check
+ if [ ! -e ".git" ]; then
+ echo "$BASENAME: not in a Git repository"
+ exit 1
+ fi
+
+ # Get the repository name
+ local repo="`git rev-parse --show-toplevel`"
+ local name="`basename $repo`"
+
+ # Old command alternatives
+ #git log $* --format=format:"%aI REPO %h %s" | sed "s/ REPO / $name /"
+ #git log $* --format=format:"%aI REPO %h %s" | sed "s/ REPO / $name\t\t /"
+ #git log $* --format=format:"%aI REPO %<(8) %h %s" | sed "s/ REPO / $name /"
+ #git log $* --format=format:"%aI REPO %>(20) %h %s" | sed "s/ REPO / $name /"
+ #git log $* --format=format:"%aI|||REPO|||%h|||%>(100,trunc)%s" | sed "s/REPO/ $name /"
+
+ # Command template
+ cmd='git log --format=format:%aI|||REPO|||%h|||%s'
+
+ # Run depending on arguments
+ if [ ! -z "$1" ]; then
+ $cmd "$*" | sed "s/REPO/ $name /"
+ else
+ $cmd | sed "s/REPO/ $name /"
+ fi
+}
+
+# Build the list of commits from a single or multiple repositories
+function _logger {
+ # Check for config
+ if [ ! -e ".git" ] && [ ! -e ".mrconfig" ]; then
+ echo "$BASENAME: not in a Git repository or no .mrconfig available"
+ exit 1
+ fi
+
+ # Build the unified log
+ mr run $DIRNAME/mrlog --single-and-raw "$*" | grep -v "^mr run:" | sort -r | column -s '|||' -t -o ' ' | less
+}
+
+# Dispatch
+if [ "$1" != "--single-and-raw" ]; then
+ _logger "$*"
+else
+ shift
+ _git_log_wrapper "$*"
+fi
diff --git a/rcommit b/rcommit
index 59d95d0..50ec8be 100755
--- a/rcommit
+++ b/rcommit
@@ -6,7 +6,7 @@
#
# From a submodule folder:
#
-# sup <message>
+# rcommit <message>
#
# This go upwards and commit, until there's no parent repository.
@@ -18,7 +18,7 @@ GIT="hit"
# Commit upwards
function upward_commit {
- local level=""
+ local level="../"
local up="../"
local found="0"
local base