Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,6 @@ src/lsdiff$(EXEEXT): src/filterdiff$(EXEEXT)
src/grepdiff$(EXEEXT): src/filterdiff$(EXEEXT)
ln -sf $(notdir $<) $@

src/patchview$(EXEEXT): src/filterdiff$(EXEEXT)
ln -sf $(notdir $<) $@

install-exec-hook:
ln -sf "`echo interdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo combinediff|sed '$(transform)'`"
Expand Down Expand Up @@ -106,7 +104,7 @@ uninstall-hook:
rm -f patchutils; \
fi

CLEANFILES=src/combinediff src/flipdiff src/lsdiff src/grepdiff src/patchview
CLEANFILES=src/combinediff src/flipdiff src/lsdiff src/grepdiff
MAINTAINERCLEANFILES=$(man_MANS)

# Regression tests.
Expand Down Expand Up @@ -315,7 +313,7 @@ XFAIL_TESTS = \
tests/lsdiff-lines-option/run-test

test-perms: src/combinediff$(EXEEXT) src/flipdiff$(EXEEXT) \
src/lsdiff$(EXEEXT) src/grepdiff$(EXEEXT) src/patchview$(EXEEXT) \
src/lsdiff$(EXEEXT) src/grepdiff$(EXEEXT) \
scripts/splitdiff
for script in $(bin_SCRIPTS); do \
if [ -f $(top_builddir)/$$script ]; then \
Expand Down
5 changes: 5 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ Patchutils news
Added manual pages for gitdiff, gitdiffview, svndiff, and svndiffview
commands. Addresses GitHub issue #112.

Deprecated --filter, --list, and --grep options in favor of using
the appropriate command names (filterdiff, lsdiff, grepdiff). These
options now issue deprecation warnings and may be removed in a future
version.

0.4.3 (stable)

Added --in-place option to more tools for editing files in place.
Expand Down
24 changes: 16 additions & 8 deletions doc/patchutils.xml
Original file line number Diff line number Diff line change
Expand Up @@ -905,15 +905,17 @@
<option>--list</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>lsdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>lsdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>lsdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--grep</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>grepdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
</variablelist>
Expand Down Expand Up @@ -1353,15 +1355,17 @@ filterdiff -i 'b/*/newname' git-patch-with-renames.patch]]></screen></para>
<option>--filter</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>filterdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--grep</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>grepdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
</variablelist>
Expand Down Expand Up @@ -1710,15 +1714,17 @@ will pipe patch of file #2 to vim - -R
<option>--filter</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>filterdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--grep</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>grepdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>grepdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
</variablelist>
Expand Down Expand Up @@ -2384,15 +2390,17 @@ will pipe patch of file #2 to vim - -R
<option>--filter</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>filterdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>filterdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--list</option>
</term>
<listitem>
<para>Behave like <citerefentry><refentrytitle>lsdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.</para>
<para>Behave like <citerefentry><refentrytitle>lsdiff</refentrytitle><manvolnum>1</manvolnum></citerefentry> instead.
<emphasis>Deprecated:</emphasis> Use the <command>lsdiff</command> command directly instead.</para>
</listitem>
</varlistentry>
</variablelist>
Expand Down
74 changes: 74 additions & 0 deletions scripts/patchview
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!/bin/sh

# patchview - wrapper script for patchutils
# This script replaces the patchview symlink to filterdiff and provides
# cleaner mode switching by calling the appropriate tool directly.

# Check for switches (arguments starting with -)
# Handle -- separator properly: everything after -- is treated as non-options
has_switches=0
past_separator=0
for arg in "$@"; do
if [ "$past_separator" -eq 1 ]; then
# Everything after -- is treated as filenames, not switches
continue
fi
case "$arg" in
--)
# -- separator found, stop looking for switches after this
past_separator=1
;;
-*)
has_switches=1
break
;;
esac
done

# Default behavior: if no switches, behave like "lsdiff --number"
# This matches the original patchview behavior in filterdiff.c
if [ $has_switches -eq 0 ]; then
exec lsdiff --number "$@"
fi

# Check for mode-switching options
case "$1" in
--filter)
# Remove --filter and pass remaining args to filterdiff
shift
exec filterdiff "$@"
;;
--grep)
# Remove --grep and pass remaining args to grepdiff
shift
exec grepdiff "$@"
;;
--help)
cat << 'EOF'
usage: patchview [OPTION]... [files ...]

patchview is a wrapper for filterdiff that provides numbered file listing.

Without switches:
patchview [files...] equivalent to: lsdiff --number [files...]

With mode options:
patchview --filter ... equivalent to: filterdiff ...
patchview --grep ... equivalent to: grepdiff ...

With other options:
patchview -F2- equivalent to: filterdiff -F2-

For complete option details, see:
man filterdiff, man lsdiff, man grepdiff
EOF
;;
--version)
# Get version from filterdiff
exec filterdiff --version
;;
*)
# Any other arguments: behave like filterdiff
exec filterdiff "$@"
;;
esac
40 changes: 14 additions & 26 deletions src/filterdiff.c
Original file line number Diff line number Diff line change
Expand Up @@ -1536,20 +1536,20 @@ const char * syntax_str =
" --lines=L include only hunks with (original) lines in range L, if range begins with x show all excluding range L\n"
" -F F, --files=F\n"
" include only files in range F, if range begins with x show all excluding range F\n"
" --annotate (filterdiff, patchview, grepdiff)\n"
" annotate each hunk with the filename and hunk number (filterdiff, patchview, grepdiff)\n"
" --as-numbered-lines=before|after|original-before|original-after (filterdiff, patchview, grepdiff)\n"
" --annotate (filterdiff, grepdiff)\n"
" annotate each hunk with the filename and hunk number (filterdiff, grepdiff)\n"
" --as-numbered-lines=before|after|original-before|original-after (filterdiff, grepdiff)\n"
" display lines as they would look before, or after, the patch is applied;\n"
" or with original line numbers from the diff (original-before/original-after)\n"
" --format=context|unified (filterdiff, patchview, grepdiff)\n"
" set output format (filterdiff, patchview, grepdiff)\n"
" --format=context|unified (filterdiff, grepdiff)\n"
" set output format (filterdiff, grepdiff)\n"
" --output-matching=hunk|file (grepdiff)\n"
" show matching hunks or file-level diffs (grepdiff)\n"
" --only-match=rem|removals|add|additions|mod|modifications|all (grepdiff)\n"
" regex will only match removals, additions, modifications or (grepdiff)\n"
" the whole hunk (grepdiff)\n"
" --remove-timestamps (filterdiff, patchview, grepdiff)\n"
" don't show timestamps from output (filterdiff, patchview, grepdiff)\n"
" --remove-timestamps (filterdiff, grepdiff)\n"
" don't show timestamps from output (filterdiff, grepdiff)\n"
" --clean (filterdiff)\n"
" remove all comments (non-diff lines) from output (filterdiff)\n"
" --in-place (filterdiff)\n"
Expand Down Expand Up @@ -1590,9 +1590,9 @@ const char * syntax_str =
" treat empty files as absent (lsdiff)\n"
" -f FILE, --file=FILE (grepdiff)\n"
" read regular expressions from FILE (grepdiff)\n"
" --filter run as 'filterdiff' (grepdiff, patchview, lsdiff)\n"
" --list run as 'lsdiff' (filterdiff, patchview, grepdiff)\n"
" --grep run as 'grepdiff' (filterdiff, patchview, lsdiff)\n"
" --filter run as 'filterdiff' (deprecated, use program name instead) (grepdiff, lsdiff)\n"
" --list run as 'lsdiff' (deprecated, use program name instead) (filterdiff, grepdiff)\n"
" --grep run as 'grepdiff' (deprecated, use program name instead) (filterdiff, lsdiff)\n"
;

NORETURN
Expand Down Expand Up @@ -1698,12 +1698,6 @@ static void set_filter (void)
mode = mode_filter;
}

static void set_view (void)
{
/* This is patchview. */
set_progname ("patchview");
mode = mode_filter;
}

static void set_grep (void)
{
Expand All @@ -1714,17 +1708,14 @@ static void set_grep (void)

static void determine_mode_from_name (const char *argv0)
{
/* This is filterdiff, unless it is named 'lsdiff', 'grepdiff' or 'patchview'. */
/* This is filterdiff, unless it is named 'lsdiff' or 'grepdiff'. */
const char *p = strrchr (argv0, '/');
if (!p++)
p = argv0;
if (strstr (p, "lsdiff"))
set_list ();
else if (strstr (p, "grepdiff"))
set_grep ();
else if (strstr (p, "patchview")) {
set_view ();
}
else
set_filter ();
}
Expand Down Expand Up @@ -1783,7 +1774,6 @@ int main (int argc, char *argv[])
FILE *f = stdin;
char format = '\0';
int regex_file_specified = 0;
int have_switches = 0;
int inplace_mode = 0;

setlocale (LC_TIME, "C");
Expand Down Expand Up @@ -1836,15 +1826,17 @@ int main (int argc, char *argv[])
if (c == -1)
break;

have_switches = 1;
switch (c) {
case 'g':
fprintf (stderr, "Warning: --grep is deprecated, use 'grepdiff' command instead\n");
set_grep ();
break;
case 1000 + 'f':
fprintf (stderr, "Warning: --filter is deprecated, use 'filterdiff' command instead\n");
set_filter ();
break;
case 'l':
fprintf (stderr, "Warning: --list is deprecated, use 'lsdiff' command instead\n");
set_list ();
break;
case 'E':
Expand Down Expand Up @@ -2018,10 +2010,6 @@ int main (int argc, char *argv[])
syntax(1);
}
}
if (have_switches == 0 && strcmp (progname, "patchview") == 0) {
mode = mode_list;
number_files = 1;
}

/* Preserve the old semantics of -p. */
if (mode != mode_filter && ignore_components && !strip_components &&
Expand Down
2 changes: 1 addition & 1 deletion tests/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ REDIFF=${top_builddir}/src/rediff
COMBINEDIFF=${top_builddir}/src/combinediff
FLIPDIFF=${top_builddir}/src/flipdiff
LSDIFF=${top_builddir}/src/lsdiff
PATCHVIEW=${top_builddir}/src/patchview
PATCHVIEW=${top_builddir}/scripts/patchview
GREPDIFF=${top_builddir}/src/grepdiff
FILTERDIFF=${top_builddir}/src/filterdiff
SELECTDIFF=${top_builddir}/src/selectdiff
Expand Down
7 changes: 0 additions & 7 deletions tests/git-lsdiff-status/run-test
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,3 @@ cat << EOF | cmp - result7 || exit 1
+ a/empty-new.txt
- a/empty-deleted.txt
EOF

# Test 8: Test with filterdiff in list mode (should use same code paths)
${FILTERDIFF} --list -s mixed-git.patch 2>errors8 >result8 || exit 1
[ -s errors8 ] && exit 1

# Should be identical to lsdiff -s output
cmp result7 result8 || exit 1
Loading