All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 05/18] xfstests: fold common into check
Date: Thu, 26 Jul 2012 19:27:59 +1000	[thread overview]
Message-ID: <1343294892-20991-6-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1343294892-20991-1-git-send-email-david@fromorbit.com>

From: Dave Chinner <dchinner@redhat.com>

There is only one user of the common file now - check. Fold the two
into one file as the split of functionality is not necessary
anymore.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
 check  |  313 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 common |  334 ----------------------------------------------------------------
 2 files changed, 311 insertions(+), 336 deletions(-)
 delete mode 100644 common

diff --git a/check b/check
index a4af0f6..bccdc08 100755
--- a/check
+++ b/check
@@ -44,9 +44,318 @@ then
     exit 1
 fi
 
-# we need common
-. ./common
+# argument parsing first - currently very messy, needs cleanup.
+_setenvironment()
+{
+    MSGVERB="text:action"
+    export MSGVERB
+}
+
+usage()
+{
+    echo "Usage: $0 [options] [testlist]"'
+
+common options
+    -v			verbose
+
+check options
+    -xfs                test XFS (default)
+    -udf                test UDF
+    -nfs                test NFS
+    -l			line mode diff
+    -xdiff		graphical mode diff
+    -udiff		show unified diff (default)
+    -n			show me, do not run tests
+    -q			quick [deprecated]
+    -T			output timestamps
+    -r			randomize test order
+    --large-fs		optimise scratch device for large filesystems
+
+testlist options
+    -g group[,group...]	include tests from these groups
+    -x group[,group...]	exclude tests from these groups
+    NNN			include test NNN
+    NNN-NNN		include test range (eg. 012-021)
+'
+	    exit 0
+}
+
+here=`pwd`
+rm -f $here/$iam.out
+_setenvironment
+
+check=${check-true}
+
+diff="diff -u"
+verbose=false
+group=false
+xgroup=false
+showme=false
+sortme=false
+expunge=true
+have_test_arg=false
+randomize=false
+rm -f $tmp.list $tmp.tmp $tmp.sed
+
+# Autodetect fs type based on what's on $TEST_DEV
+if [ "$HOSTOS" == "Linux" ]
+then
+    export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
+else
+    export FSTYP=xfs
+fi
+
+for r
+do
+
+    if $group
+    then
+	# arg after -g
+       group_list=$(sed -n < group \
+                       -e 's/#.*//' \
+                       -e 's/$/ /' \
+                       -e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
+	if [ -z "$group_list" ]
+	then
+	    echo "Group \"$r\" is empty or not defined?"
+	    exit 1
+	fi
+	[ ! -s $tmp.list ] && touch $tmp.list
+	for t in $group_list
+	do
+	    if grep -s "^$t\$" $tmp.list >/dev/null
+	    then
+		:
+	    else
+		echo "$t" >>$tmp.list
+	    fi
+	done
+	group=false
+	continue
+
+    elif $xgroup
+    then
+	# arg after -x
+	[ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
+	group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
+s/ .*//p
+}'`
+	if [ -z "$group_list" ]
+	then
+	    echo "Group \"$r\" is empty or not defined?"
+	    exit 1
+	fi
+	numsed=0
+	rm -f $tmp.sed
+	for t in $group_list
+	do
+	    if [ $numsed -gt 100 ]
+	    then
+		sed -f $tmp.sed <$tmp.list >$tmp.tmp
+		mv $tmp.tmp $tmp.list
+		numsed=0
+		rm -f $tmp.sed
+	    fi
+	    echo "/^$t\$/d" >>$tmp.sed
+	    numsed=`expr $numsed + 1`
+	done
+	sed -f $tmp.sed <$tmp.list >$tmp.tmp
+	mv $tmp.tmp $tmp.list
+	xgroup=false
+	continue
+    fi
+
+    xpand=true
+    case "$r"
+    in
+
+	-\? | -h | --help)	# usage
+	    usage
+	    ;;
+
+	-udf)	# -udf ... set FSTYP to udf
+	    FSTYP=udf
+	    xpand=false
+	    ;;
+
+	-xfs)	# -xfs ... set FSTYP to xfs
+	    FSTYP=xfs
+	    xpand=false
+	    ;;
+
+	-nfs)	# -nfs ... set FSTYP to nfs
+	    FSTYP=nfs
+	    xpand=false
+	    ;;
+
+	-g)	# -g group ... pick from group file
+	    group=true
+	    xpand=false
+	    ;;
+
+	-l)	# line mode for diff, was default before
+	    diff="diff"
+	    xpand=false
+	    ;;
+
+	-xdiff)	# graphical diff mode
+	    xpand=false
+
+	    if [ ! -z "$DISPLAY" ]
+	    then
+		which xdiff >/dev/null 2>&1 && diff=xdiff
+		which gdiff >/dev/null 2>&1 && diff=gdiff
+		which tkdiff >/dev/null 2>&1 && diff=tkdiff
+		which xxdiff >/dev/null 2>&1 && diff=xxdiff
+	    fi
+	    ;;
+
+	-udiff) # show a unified diff, default now, keep for backward compat
+	    xpand=false
+	    diff="$diff -u"
+	    ;;
+
+	-q)	# "quick", no longer used - always quick :-)
+	    xpand=false
+	    ;;
+
+	-n)	# show me, don't do it
+	    showme=true
+	    xpand=false
+	    ;;
+        -r)	# randomize test order
+	    randomize=true
+	    xpand=false
+	    ;;
+
+	-T)	# turn on timestamp output
+	    timestamp=true
+	    xpand=false
+	    ;;
+
+	-v)
+	    verbose=true
+	    xpand=false
+	    ;;
+	-x)	# -x group ... exclude from group file
+	    xgroup=true
+	    xpand=false
+	    ;;
+	'[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
+	    echo "No tests?"
+	    status=1
+	    exit $status
+	    ;;
+
+	[0-9]*-[0-9]*)
+	    eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
+	    ;;
+
+	[0-9]*-)
+	    eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
+	    end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/  *$//' -e 's/.* //'`
+	    if [ -z "$end" ]
+	    then
+		echo "No tests in range \"$r\"?"
+		status=1
+		exit $status
+	    fi
+	    ;;
+
+	--large-fs)
+	    export LARGE_SCRATCH_DEV=yes
+	    xpand=false
+	    ;;
+
+	-*)
+	    usage
+	    ;;
+
+	--extra-space=*)
+	    export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
+	    xpand=false
+	    ;;
+
+	*)
+	    start=$r
+	    end=$r
+	    ;;
+
+    esac
+
+    # get rid of leading 0s as can be interpreted as octal
+    start=`echo $start | sed 's/^0*//'`
+    end=`echo $end | sed 's/^0*//'`
+
+    if $xpand
+    then
+	have_test_arg=true
+	$AWK_PROG </dev/null '
+BEGIN	{ for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
+	| while read id
+	do
+	    if grep -s "^$id " group >/dev/null
+	    then
+		# in group file ... OK
+		echo $id >>$tmp.list
+	    else
+		if [ -f expunged ] && $expunge && egrep "^$id([ 	]|\$)" expunged >/dev/null
+		then
+		    # expunged ... will be reported, but not run, later
+		    echo $id >>$tmp.list
+		else
+		    # oops
+		    echo "$id - unknown test, ignored"
+		fi
+	    fi
+	done
+    fi
+
+done
+
+if [ -s $tmp.list ]
+then
+    # found some valid test numbers ... this is good
+    :
+else
+    if $have_test_arg
+    then
+	# had test numbers, but none in group file ... do nothing
+	touch $tmp.list
+    else
+	# no test numbers, do everything from group file
+	sed -n -e '/^[0-9][0-9][0-9]*/s/[ 	].*//p' <group >$tmp.list
+    fi
+fi
+
+# should be sort -n, but this did not work for Linux when this
+# was ported from IRIX
+#
+list=`sort $tmp.list`
+rm -f $tmp.list $tmp.tmp $tmp.sed
+
+if $randomize
+then
+    list=`echo $list | awk -f randomize.awk`
+fi
 
+case "$FSTYP" in
+    xfs)
+	 [ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
+	 [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
+	 [ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
+	 [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
+	 [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found" 
+	 ;;
+    udf)
+	 [ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
+	 ;;
+    btrfs)
+	 [ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
+	 ;;
+    nfs)
+	 ;;
+esac
 
 # we need common.rc
 if ! . ./common.rc
diff --git a/common b/common
deleted file mode 100644
index 78ac654..0000000
--- a/common
+++ /dev/null
@@ -1,334 +0,0 @@
-##/bin/bash 
-#
-# Copyright (c) 2000-2005 Silicon Graphics, Inc.  All Rights Reserved.
-#
-# 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.
-#
-# This program is distributed in the hope that it would 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, write the Free Software Foundation,
-# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-#
-# common procedures for QA scripts
-#
-# $Header: /disk7/depot/linux/pcp/dev/qa/RCS/common,v 2.52 2000/04/05 18:24:51 kenmcd Exp $
-#
-
-_setenvironment()
-{
-    MSGVERB="text:action"
-    export MSGVERB
-}
-
-usage()
-{
-    echo "Usage: $0 [options] [testlist]"'
-
-common options
-    -v			verbose
-
-check options
-    -xfs                test XFS (default)
-    -udf                test UDF
-    -nfs                test NFS
-    -l			line mode diff
-    -xdiff		graphical mode diff
-    -udiff		show unified diff (default)
-    -n			show me, do not run tests
-    -q			quick [deprecated]
-    -T			output timestamps
-    -r			randomize test order
-    --large-fs		optimise scratch device for large filesystems
-
-testlist options
-    -g group[,group...]	include tests from these groups
-    -x group[,group...]	exclude tests from these groups
-    NNN			include test NNN
-    NNN-NNN		include test range (eg. 012-021)
-'
-	    exit 0
-}
-
-here=`pwd`
-rm -f $here/$iam.out
-_setenvironment
-
-check=${check-true}
-
-diff="diff -u"
-verbose=false
-group=false
-xgroup=false
-showme=false
-sortme=false
-expunge=true
-have_test_arg=false
-randomize=false
-rm -f $tmp.list $tmp.tmp $tmp.sed
-
-# Autodetect fs type based on what's on $TEST_DEV
-if [ "$HOSTOS" == "Linux" ]
-then
-    export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
-else
-    export FSTYP=xfs
-fi
-
-for r
-do
-
-    if $group
-    then
-	# arg after -g
-       group_list=$(sed -n < group \
-                       -e 's/#.*//' \
-                       -e 's/$/ /' \
-                       -e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
-	if [ -z "$group_list" ]
-	then
-	    echo "Group \"$r\" is empty or not defined?"
-	    exit 1
-	fi
-	[ ! -s $tmp.list ] && touch $tmp.list
-	for t in $group_list
-	do
-	    if grep -s "^$t\$" $tmp.list >/dev/null
-	    then
-		:
-	    else
-		echo "$t" >>$tmp.list
-	    fi
-	done
-	group=false
-	continue
-
-    elif $xgroup
-    then
-	# arg after -x
-	[ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
-	group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
-s/ .*//p
-}'`
-	if [ -z "$group_list" ]
-	then
-	    echo "Group \"$r\" is empty or not defined?"
-	    exit 1
-	fi
-	numsed=0
-	rm -f $tmp.sed
-	for t in $group_list
-	do
-	    if [ $numsed -gt 100 ]
-	    then
-		sed -f $tmp.sed <$tmp.list >$tmp.tmp
-		mv $tmp.tmp $tmp.list
-		numsed=0
-		rm -f $tmp.sed
-	    fi
-	    echo "/^$t\$/d" >>$tmp.sed
-	    numsed=`expr $numsed + 1`
-	done
-	sed -f $tmp.sed <$tmp.list >$tmp.tmp
-	mv $tmp.tmp $tmp.list
-	xgroup=false
-	continue
-    fi
-
-    xpand=true
-    case "$r"
-    in
-
-	-\? | -h | --help)	# usage
-	    usage
-	    ;;
-
-	-udf)	# -udf ... set FSTYP to udf
-	    FSTYP=udf
-	    xpand=false
-	    ;;
-
-	-xfs)	# -xfs ... set FSTYP to xfs
-	    FSTYP=xfs
-	    xpand=false
-	    ;;
-
-	-nfs)	# -nfs ... set FSTYP to nfs
-	    FSTYP=nfs
-	    xpand=false
-	    ;;
-
-	-g)	# -g group ... pick from group file
-	    group=true
-	    xpand=false
-	    ;;
-
-	-l)	# line mode for diff, was default before
-	    diff="diff"
-	    xpand=false
-	    ;;
-
-	-xdiff)	# graphical diff mode
-	    xpand=false
-
-	    if [ ! -z "$DISPLAY" ]
-	    then
-		which xdiff >/dev/null 2>&1 && diff=xdiff
-		which gdiff >/dev/null 2>&1 && diff=gdiff
-		which tkdiff >/dev/null 2>&1 && diff=tkdiff
-		which xxdiff >/dev/null 2>&1 && diff=xxdiff
-	    fi
-	    ;;
-
-	-udiff) # show a unified diff, default now, keep for backward compat
-	    xpand=false
-	    diff="$diff -u"
-	    ;;
-
-	-q)	# "quick", no longer used - always quick :-)
-	    xpand=false
-	    ;;
-
-	-n)	# show me, don't do it
-	    showme=true
-	    xpand=false
-	    ;;
-        -r)	# randomize test order
-	    randomize=true
-	    xpand=false
-	    ;;
-
-	-T)	# turn on timestamp output
-	    timestamp=true
-	    xpand=false
-	    ;;
-
-	-v)
-	    verbose=true
-	    xpand=false
-	    ;;
-	-x)	# -x group ... exclude from group file
-	    xgroup=true
-	    xpand=false
-	    ;;
-	'[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
-	    echo "No tests?"
-	    status=1
-	    exit $status
-	    ;;
-
-	[0-9]*-[0-9]*)
-	    eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
-	    ;;
-
-	[0-9]*-)
-	    eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
-	    end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/  *$//' -e 's/.* //'`
-	    if [ -z "$end" ]
-	    then
-		echo "No tests in range \"$r\"?"
-		status=1
-		exit $status
-	    fi
-	    ;;
-
-	--large-fs)
-	    export LARGE_SCRATCH_DEV=yes
-	    xpand=false
-	    ;;
-
-	-*)
-	    usage
-	    ;;
-
-	--extra-space=*)
-	    export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
-	    xpand=false
-	    ;;
-
-	*)
-	    start=$r
-	    end=$r
-	    ;;
-
-    esac
-
-    # get rid of leading 0s as can be interpreted as octal
-    start=`echo $start | sed 's/^0*//'`
-    end=`echo $end | sed 's/^0*//'`
-
-    if $xpand
-    then
-	have_test_arg=true
-	$AWK_PROG </dev/null '
-BEGIN	{ for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
-	| while read id
-	do
-	    if grep -s "^$id " group >/dev/null
-	    then
-		# in group file ... OK
-		echo $id >>$tmp.list
-	    else
-		if [ -f expunged ] && $expunge && egrep "^$id([ 	]|\$)" expunged >/dev/null
-		then
-		    # expunged ... will be reported, but not run, later
-		    echo $id >>$tmp.list
-		else
-		    # oops
-		    echo "$id - unknown test, ignored"
-		fi
-	    fi
-	done
-    fi
-
-done
-
-if [ -s $tmp.list ]
-then
-    # found some valid test numbers ... this is good
-    :
-else
-    if $have_test_arg
-    then
-	# had test numbers, but none in group file ... do nothing
-	touch $tmp.list
-    else
-	# no test numbers, do everything from group file
-	sed -n -e '/^[0-9][0-9][0-9]*/s/[ 	].*//p' <group >$tmp.list
-    fi
-fi
-
-# should be sort -n, but this did not work for Linux when this
-# was ported from IRIX
-#
-list=`sort $tmp.list`
-rm -f $tmp.list $tmp.tmp $tmp.sed
-
-if $randomize
-then
-    list=`echo $list | awk -f randomize.awk`
-fi
-
-case "$FSTYP" in
-    xfs)
-	 [ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
-	 [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
-	 [ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
-	 [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
-	 [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found" 
-	 ;;
-    udf)
-	 [ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
-	 ;;
-    btrfs)
-	 [ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
-	 ;;
-    nfs)
-	 ;;
-esac
-- 
1.7.10

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  parent reply	other threads:[~2012-07-26  9:28 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26  9:27 [RFC] [PATCH 0/18] xfstests: move tests out of top level Dave Chinner
2012-07-26  9:27 ` [PATCH 01/18] xfstests: remove remake script Dave Chinner
2012-08-28 19:50   ` Christoph Hellwig
2012-07-26  9:27 ` [PATCH 02/18] xfstests: remove bench infrastructure Dave Chinner
2012-07-26  9:27 ` [PATCH 03/18] xfstests: kill useless test owner fields Dave Chinner
2012-08-28 19:51   ` Christoph Hellwig
2012-07-26  9:27 ` [PATCH 04/18] xfstests: remove stale machine configs Dave Chinner
2012-08-28 19:51   ` Christoph Hellwig
2012-07-26  9:27 ` Dave Chinner [this message]
2012-08-28 19:52   ` [PATCH 05/18] xfstests: fold common into check Christoph Hellwig
2012-07-26  9:28 ` [PATCH 06/18] xfstests: clean up and simply check CLI option parsing Dave Chinner
2012-08-28 19:52   ` Christoph Hellwig
2012-07-26  9:28 ` [PATCH 07/18] xfstests: kill hangcheck stuff from check Dave Chinner
2012-08-28 19:53   ` Christoph Hellwig
2012-07-26  9:28 ` [PATCH 08/18] xfstests: remove test expunge file support Dave Chinner
2012-08-28 19:54   ` Christoph Hellwig
2012-07-26  9:28 ` [PATCH 09/18] xfstests: remove undocumented TESTS_REMAINING_LOG Dave Chinner
2012-08-28 19:54   ` Christoph Hellwig
2012-07-26  9:28 ` [PATCH 10/18] xfstests: include test subdirectory support Dave Chinner
2012-07-26  9:28 ` [PATCH 11/18] xfstests: move generic tests out of top level dir Dave Chinner
2012-07-26  9:28 ` [PATCH 12/18] xfstests: move xfs specific tests out of top directory Dave Chinner
2012-07-26  9:28 ` [PATCH 13/18] xfstests: move remaining tests out of top level directory Dave Chinner
2012-07-26  9:28 ` [PATCH 14/18] xfstests: rework CLI individual test specification Dave Chinner
2012-07-26  9:28 ` [PATCH 15/18] xfstests: make exclude groups aware of multiple subdirectories Dave Chinner
2012-07-26  9:28 ` [PATCH 16/18] xfstests: Introduce a results directory Dave Chinner
2012-07-26  9:28 ` [PATCH 17/18] xfstests: convert tests to use new " Dave Chinner
2012-09-05 12:00   ` Boris Ranto
2012-09-05 23:04     ` Dave Chinner
2012-09-06 12:34       ` Boris Ranto
2012-09-06 23:14         ` Dave Chinner
2012-09-07 12:47           ` Boris Ranto
2012-07-26  9:28 ` [PATCH 18/18] xfstests: fix _link_out_file callers Dave Chinner
2012-08-14 21:39 ` [RFC] [PATCH 0/18] xfstests: move tests out of top level Dave Chinner
2012-08-15 17:23   ` Mark Tinguely
2012-08-20 21:27 ` Mark Tinguely
2012-08-20 22:43   ` Dave Chinner
2012-08-21 16:33     ` Ben Myers
2012-08-21 22:09       ` Dave Chinner
2012-08-22 19:16         ` Ben Myers
2012-08-22 23:42           ` Dave Chinner
2012-08-23 17:00             ` Ben Myers
2012-08-24  4:07               ` Dave Chinner
2012-08-28 17:43                 ` Ben Myers
2012-08-28 18:02                   ` Christoph Hellwig
2013-02-25 15:50               ` Eric Sandeen
2013-02-25 21:52                 ` Dave Chinner
2013-02-26  0:27                   ` Theodore Ts'o
2013-02-26  3:18                     ` Dave Chinner
2013-02-26  3:22                     ` Ben Myers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1343294892-20991-6-git-send-email-david@fromorbit.com \
    --to=david@fromorbit.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.