<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git">
    <title>gmane.comp.version-control.git</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224772"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224771"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224770"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224769"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224768"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224767"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224766"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224765"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224764"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224763"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224762"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224761"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224760"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224759"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224758"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224757"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224756"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224755"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224754"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.version-control.git/224753"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224772">
    <title>Re: make git ignore the timestamp embedded in PDFs</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224772</link>
    <description>&lt;pre&gt;Hi Hannes,

thanks for taking this up and sorry for the long delay in my answer.

Johannes Sixt &amp;lt;j6t&amp;lt; at &amp;gt;kdbg.org&amp;gt; writes:


yes.


no.

Here is a complete 'session':
,----
| &amp;gt; mkdir test
| &amp;gt; cd test
| &amp;gt; git init
| &amp;gt; echo '*.pdf filter=pdfresetdate' &amp;gt; .gitattributes
| &amp;gt; cp ~/PDF/score_table.pdf .
| &amp;gt; pdfinfo score_table.pdf
| Title:          (score_table)
| Author:         (andreas)
| Creator:        GPL Ghostscript 905 (ps2write)
| Producer:       GPL Ghostscript 9.05
| CreationDate:   Fri Feb  8 15:44:47 2013
| ModDate:        Fri Feb  8 15:44:47 2013
| Tagged:         no
| Pages:          1
| Encrypted:      no
| Page size:      595 x 842 pts (A4)
| File size:      36989 bytes
| Optimized:      no
| PDF version:    1.4
| &amp;gt; git add score_table.pdf
| &amp;gt; pdfinfo score_table.pdf
| Title:          (score_table)
| Author:         (andreas)
| Creator:        GPL Ghostscript 905 (ps2write)
| Producer:       GPL Ghostscript 9.05
| CreationDate:   Fri Feb  8 15:44:47 2013
| ModDate:        Fri Feb  8 15:44:47 2013
| Tag&lt;/pre&gt;</description>
    <dc:creator>Andreas Leha</dc:creator>
    <dc:date>2013-05-18T07:42:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224771">
    <title>Re: Fwd: Fwd: git cvsimport implications</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224771</link>
    <description>&lt;pre&gt;
I didn't mean to be offensive.  I meant it more in the sense of "you
deserve to expect more from your software".


The Git test suite (tests t/t960?-*.sh) demonstrates some of the known
problems with cvsimport, and those failures are summarized in the
manpage for git-cvsimport(1).  Not all of the problems are related to
branches and tags.  There might be more problems; I simply documented a
few that I found relatively quickly then I stopped looking.


There are benefits to the split blobfile/dumpfile approach for some
users, so I wouldn't want to get rid of that possibility.  But there's
no reason I wouldn't accept a patch that provides an option to convert
as you describe.  Alternately, it would take only a few lines of script
to automate it yourself.

Michael

&lt;/pre&gt;</description>
    <dc:creator>Michael Haggerty</dc:creator>
    <dc:date>2013-05-18T05:52:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224770">
    <title>[PATCH v12 15/15] test: add t7301 for git-clean--interactive</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224770</link>
    <description>&lt;pre&gt;Add test cases for git-clean--interactive.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 t/t7301-clean-interactive.sh | 439 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 439 insertions(+)
 create mode 100755 t/t7301-clean-interactive.sh

diff --git a/t/t7301-clean-interactive.sh b/t/t7301-clean-interactive.sh
new file mode 100755
index 00000..4e605
--- /dev/null
+++ b/t/t7301-clean-interactive.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,439 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+
+test_description='git clean -i basic tests'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+
+mkdir -p src &amp;amp;&amp;amp;
+touch src/part1.c Makefile &amp;amp;&amp;amp;
+echo build &amp;gt;.gitignore &amp;amp;&amp;amp;
+echo \*.o &amp;gt;&amp;gt;.gitignore &amp;amp;&amp;amp;
+git add . &amp;amp;&amp;amp;
+git commit -m setup &amp;amp;&amp;amp;
+touch src/part2.c README &amp;amp;&amp;amp;
+git add .
+
+'
+
+test_expect_success 'git clean -i (clean)' '
+
+mkdir -p build docs &amp;amp;&amp;amp;
+touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
+docs/manual.txt obj.o build/lib.so &amp;amp;&amp;amp;
+echo c | git clean -i &amp;amp;&amp;amp;
+test -f Makefile &amp;amp;&amp;amp;
+test -f README &amp;amp;&amp;amp;
+test -f src/part1.c &amp;amp;&amp;amp;
&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:07</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224769">
    <title>[PATCH v12 12/15] git-clean: add select by numbers interactive action</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224769</link>
    <description>&lt;pre&gt;Draw a multiple choice menu using `list_and_choose` to select items
to be deleted by numbers.

User can input:

 *  1,5-7 : select 1,5,6,7 items to be deleted
 *  *     : select all items to be deleted
 *  -*    : unselect all, nothing will be deleted
 *        : (empty) finish selecting, and return back to main menu

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/clean.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/builtin/clean.c b/builtin/clean.c
index e5b1d..fd6e6 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -681,6 +681,43 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_by_patterns_cmd(void)
 return 0;
 }
 
+static int select_by_numbers_cmd(void)
+{
+struct menu_opts menu_opts;
+struct menu_stuff menu_stuff;
+struct string_list_item *items;
+int *chosen;
+int i, j;
+
+menu_opts.header = NULL;
+menu_opts.prompt = N_("Select items to delete");
+menu_opts.flags = 0;
+
+menu_stuff.type = MENU_STUFF_TYPE_STRING_LIST;
+menu_stuff.stuff = &amp;amp;del_list;
+m&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224768">
    <title>[PATCH v12 13/15] git-clean: add ask each interactive action</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224768</link>
    <description>&lt;pre&gt;Add a new action for interactive git-clean: ask each. It's just like
the "rm -i" command, that the user must confirm one by one for each
file or directory to be cleaned.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/clean.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/builtin/clean.c b/builtin/clean.c
index fd6e6..7d34b 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -718,6 +718,40 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int select_by_numbers_cmd(void)
 return 0;
 }
 
+static int ask_each_cmd(void)
+{
+struct strbuf confirm = STRBUF_INIT;
+struct strbuf buf = STRBUF_INIT;
+struct string_list_item *item;
+const char *qname;
+int changed = 0, eof = 0;
+
+for_each_string_list_item(item, &amp;amp;del_list) {
+/* Ctrl-D should stop removing files */
+if (!eof) {
+qname = quote_path_relative(item-&amp;gt;string, NULL, &amp;amp;buf);
+printf(_("remove %s? "), qname);
+if (strbuf_getline(&amp;amp;confirm, stdin, '\n') != EOF) {
+strbuf_trim(&amp;amp;confirm);
+} else {
+putchar('\n')&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224767">
    <title>[PATCH v12 14/15] git-clean: add documentation for interactive git-clean</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224767</link>
    <description>&lt;pre&gt;Add new section "Interactive mode" for documentation of interactive
git-clean.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
Helped-by: Eric Sunshine &amp;lt;sunshine&amp;lt; at &amp;gt;sunshineco.com&amp;gt;
---
 Documentation/git-clean.txt | 65 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 63 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt
index 186e34..5bf76 100644
--- a/Documentation/git-clean.txt
+++ b/Documentation/git-clean.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,8 +39,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; OPTIONS
 
 -i::
 --interactive::
-Show what would be done and the user must confirm before actually
-cleaning.
+Show what would be done and clean files interactively. See
+``Interactive mode'' for details.
 
 -n::
 --dry-run::
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -69,6 +69,67 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; OPTIONS
 Remove only files ignored by Git.  This may be useful to rebuild
 everything from scratch, but keep manually created files.
 
+Interactive mode
+----------------
+When the command enters the interactive mode, it shows the
+files and directories to be cleaned, &lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224766">
    <title>[PATCH v12 07/15] git-clean: add support for -i/--interactive</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224766</link>
    <description>&lt;pre&gt;Show what would be done and the user must confirm before actually
cleaning.

    Would remove ...
    Would remove ...
    Would remove ...

    Remove [y/n]?

Press "y" to start cleaning, and press "n" if you want to abort.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 Documentation/git-clean.txt | 10 ++++++--
 builtin/clean.c             | 57 +++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 60 insertions(+), 7 deletions(-)

diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt
index bdc3a..186e34 100644
--- a/Documentation/git-clean.txt
+++ b/Documentation/git-clean.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; git-clean - Remove untracked files from the working tree
 SYNOPSIS
 --------
 [verse]
-'git clean' [-d] [-f] [-n] [-q] [-e &amp;lt;pattern&amp;gt;] [-x | -X] [--] &amp;lt;path&amp;gt;...
+'git clean' [-d] [-f] [-i] [-n] [-q] [-e &amp;lt;pattern&amp;gt;] [-x | -X] [--] &amp;lt;path&amp;gt;...
 
 DESCRIPTION
 -----------
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,7 +34,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; OPTIONS
 -f::
 --force::
 If the Git configuration variable clean.requireForce is not set
-to fals&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224765">
    <title>[PATCH v12 10/15] git-clean: use a git-add-interactive compatible UI</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224765</link>
    <description>&lt;pre&gt;Rewrite menu using a new method `list_and_choose`, which is borrowed
from `git-add--interactive.perl`. We will use this framework to add
new actions for interactive git-clean later.

Please NOTE:

 * Method `list_and_choose` return an array of integers, and
 * it is up to you to free the allocated memory of the array.
 * The array ends with EOF.
 * If user pressed CTRL-D (i.e. EOF), no selection returned.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/clean.c | 457 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 428 insertions(+), 29 deletions(-)

diff --git a/builtin/clean.c b/builtin/clean.c
index 0778a..19cc 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,6 +50,36 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; enum color_clean {
 CLEAN_COLOR_ERROR = 5,
 };
 
+#define MENU_OPTS_SINGLETON01
+#define MENU_OPTS_IMMEDIATE02
+#define MENU_OPTS_LIST_ONLY04
+
+struct menu_opts {
+const char *header;
+const char *prompt;
+int flags;
+};
+
+#define MENU_RETURN_NO_LOOP10
+
+struct menu_item {
&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224764">
    <title>[PATCH v12 11/15] git-clean: add filter by pattern interactive action</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224764</link>
    <description>&lt;pre&gt;Add a new action for interactive git-clean: filter by pattern. When the
user chooses this action, user can input space-separated patterns (the
same syntax as gitignore), and each clean candidate that matches with
one of the patterns will be excluded from cleaning. When the user feels
it's OK, presses ENTER and backs to the confirmation dialog.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
Suggested-by: Junio C Hamano &amp;lt;gitster&amp;lt; at &amp;gt;pobox.com&amp;gt;
---
 builtin/clean.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/builtin/clean.c b/builtin/clean.c
index 19cc..e5b1d 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -615,6 +615,72 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int clean_cmd(void)
 return MENU_RETURN_NO_LOOP;
 }
 
+static int filter_by_patterns_cmd(void)
+{
+struct dir_struct dir;
+struct strbuf confirm = STRBUF_INIT;
+struct strbuf **ignore_list;
+struct string_list_item *item;
+struct exclude_list *el;
+int changed = -1, i;
+
+for (;;) {
+if (!del_list.nr)&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224763">
    <title>[PATCH v12 09/15] git-clean: add colors to interactive git-clean</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224763</link>
    <description>&lt;pre&gt;Show header, help, error messages, and prompt in colors for interactive
git-clean. Re-use config variables, such as "color.interactive" and
"color.interactive.&amp;lt;slot&amp;gt;" for command `git-add--interactive`.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
Comments-by: Matthieu Moy &amp;lt;Matthieu.Moy&amp;lt; at &amp;gt;imag.fr&amp;gt;
---
 Documentation/config.txt | 17 +++++------
 builtin/clean.c          | 73 +++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 81 insertions(+), 9 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index e031b..83613 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -876,16 +876,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; The values of these variables may be specified as in color.branch.&amp;lt;slot&amp;gt;.
 
 color.interactive::
 When set to `always`, always use colors for interactive prompts
-and displays (such as those used by "git-add --interactive").
-When false (or `never`), never.  When set to `true` or `auto`, use
-colors only when the output is to the terminal. Defaults to false.&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224762">
    <title>[PATCH v12 08/15] git-clean: show items of del_list in columns</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224762</link>
    <description>&lt;pre&gt;When there are lots of items to be cleaned, it is hard to see them all
in one screen. Show them in columns will solve this problem.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
Comments-by: Matthieu Moy &amp;lt;Matthieu.Moy&amp;lt; at &amp;gt;imag.fr&amp;gt;
---
 Documentation/config.txt |  4 ++++
 builtin/clean.c          | 49 +++++++++++++++++++++++++++++++++++++++---------
 2 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 6e53f..e031b 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -955,6 +955,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; column.branch::
 Specify whether to output branch listing in `git branch` in columns.
 See `column.ui` for details.
 
+column.clean::
+Specify the layout when list items in `git clean -i`, which always
+shows files and directories in columns. See `column.ui` for details.
+
 column.status::
 Specify whether to output untracked files in `git status` in columns.
 See `column.ui` for details.
diff --git a/builtin/clean.c b/builtin/clean.&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:19:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224761">
    <title>[PATCH v12 06/15] git-clean: refactor git-clean into two phases</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224761</link>
    <description>&lt;pre&gt;Before introducing interactive git-clean, refactor git-clean operations
into two phases:

 * hold cleaning items in del_list,
 * and remove them in a separate loop at the end.

We will introduce interactive git-clean between the two phases. The
interactive git-clean will show what would be done and must confirm
before do real cleaning.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/clean.c | 64 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 19 deletions(-)

diff --git a/builtin/clean.c b/builtin/clean.c
index f77f95..23e1f 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,6 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "quote.h"
 
 static int force = -1; /* unset */
+static struct string_list del_list = STRING_LIST_INIT_DUP;
 
 static const char *const builtin_clean_usage[] = {
 N_("git clean [-d] [-f] [-n] [-q] [-e &amp;lt;pattern&amp;gt;] [-x | -X] [--] &amp;lt;paths&amp;gt;..."),
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -148,12 +149,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int cmd_clean(int argc, const char **argv, const char *prefix)
 int dry_run = 0, remo&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224760">
    <title>[PATCH v12 05/15] Refactor write_name_quoted_relative, remove unused params</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224760</link>
    <description>&lt;pre&gt;After substitute path_relative() in quote.c with relative_path() from
path.c, parameters (such as len and prefix_len) are obsolete in function
write_name_quoted_relative(). Remove unused parameters from
write_name_quoted_relative() and related functions.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/ls-files.c | 14 ++++++++------
 quote.c            |  3 +--
 quote.h            |  3 +--
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 00f07..6acff4 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -46,10 +46,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const char *tag_modified = "";
 static const char *tag_skip_worktree = "";
 static const char *tag_resolve_undo = "";
 
-static void write_name(const char* name, size_t len)
+static void write_name(const char *name)
 {
-write_name_quoted_relative(name, len, prefix, prefix_len, stdout,
-line_terminator);
+
+/* turn off prefix, if run with "--full-name" */
+write_name_quoted_relative(name, prefix&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224759">
    <title>[PATCH v12 01/15] test: add test cases for relative_path</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224759</link>
    <description>&lt;pre&gt;Add subcommand "relative_path" in test-path-utils, and add test cases
in t0060.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 t/t0060-path-utils.sh | 26 ++++++++++++++++++++++++++
 test-path-utils.c     | 25 +++++++++++++++++++++++++
 2 files changed, 51 insertions(+)

diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh
index 09a42..2199b 100755
--- a/t/t0060-path-utils.sh
+++ b/t/t0060-path-utils.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12,6 +12,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; norm_path() {
 "test \"\$(test-path-utils normalize_path_copy '$1')\" = '$2'"
 }
 
+relative_path() {
+test_expect_success $4 "relative path: $1 $2 =&amp;gt; $3" \
+"test \"\$(test-path-utils relative_path '$1' '$2')\" = '$3'"
+}
+
 # On Windows, we are using MSYS's bash, which mangles the paths.
 # Absolute paths are anchored at the MSYS installation directory,
 # which means that the path / accounts for this many characters:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -183,4 +188,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success SYMLINKS 'real path works on symlinks' '
 test "$sym" = "$(test-path-utils real_path "$dir2/syml")"
 '
 
+relati&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224758">
    <title>[PATCH v12 00/15] Interactive git-clean</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224758</link>
    <description>&lt;pre&gt;I feel change the order of patch 01/15 and patch 02/15 is better.
I.E. Add test cases for relative_path first, then refactor
relative_path and fix the test cases.

Also fix wrong indent in t/7301.

Differences with gitster/jx/clean-interactive:

diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt
index 75fb54..5bf76 100644
--- a/Documentation/git-clean.txt
+++ b/Documentation/git-clean.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -82,8 +82,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; and type return, like this:
 
 ------------
     *** Commands ***
-1: clean                2: filter by pattern    3: select by numbers
-4: ask each             5: quit                 6: help
+        1: clean                2: filter by pattern    3: select by numbers
+        4: ask each             5: quit                 6: help
     What now&amp;gt; 1
 ------------
 
diff --git a/builtin/clean.c b/builtin/clean.c
index 73ba2..7d34b 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -64,7 +64,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct menu_opts {
 
 struct menu_item {
 char hotkey;
-char *title;
+const char *ti&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224757">
    <title>[PATCH v12 02/15] path.c: refactor relative_path(), not only strip prefix</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224757</link>
    <description>&lt;pre&gt;Original design of relative_path() is simple, just strip the prefix
(*base) from the absolute path (*abs). In most cases, we need a real
relative path, such as: ../foo, ../../bar. That's why there is another
reimplementation (path_relative()) in quote.c.

Refactor relative_path() in path.c to return real relative path, so
that user can reuse this function without reimplement his/her own.
I will use this method for interactive git-clean later. Some of the
implementations are borrowed from path_relative() in quote.c.

Different results for relative_path() before and after this refactor:

    abs path  base path  relative (original)  relative (refactor)
    ========  =========  ===================  ===================
    /a/b/c/   /a/b       c/                   c/
    /a/b//c/  //a///b/   c/                   c/
    /a/b      /a/b       .                    ./
    /a/b/     /a/b       .                    ./
    /a        /a/b/      /a                   ../
    /         /a/b/      /                    ../../&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224756">
    <title>[PATCH v12 04/15] Refactor quote_path_relative, remove unused params</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224756</link>
    <description>&lt;pre&gt;After substitute path_relative() in quote.c with relative_path() from
path.c, parameters (such as len and prefix_len) are obsolete in function
quote_path_relative(). Remove unused parameters and change the order of
parameters for quote_path_relative() function.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 builtin/clean.c    | 18 +++++++++---------
 builtin/grep.c     |  5 ++---
 builtin/ls-files.c |  2 +-
 quote.c            |  7 ++-----
 quote.h            |  4 ++--
 wt-status.c        | 17 ++++++++---------
 6 files changed, 24 insertions(+), 29 deletions(-)

diff --git a/builtin/clean.c b/builtin/clean.c
index 04e39..f77f95 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -56,7 +56,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
 if ((force_flag &amp;amp; REMOVE_DIR_KEEP_NESTED_GIT) &amp;amp;&amp;amp;
 !resolve_gitlink_ref(path-&amp;gt;buf, "HEAD", submodule_head)) {
 if (!quiet) {
-quote_path_relative(path-&amp;gt;buf, strlen(path-&amp;gt;buf), &amp;amp;quoted, prefix);
+quote_path_relative&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224755">
    <title>[PATCH v12 03/15] quote.c: remove path_relative, use relative_path instead</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224755</link>
    <description>&lt;pre&gt;Since there is an enhanced version of relative_path() in path.c,
remove duplicate counterpart path_relative() in quote.c.

Signed-off-by: Jiang Xin &amp;lt;worldhello.net&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 quote.c | 55 ++-----------------------------------------------------
 1 file changed, 2 insertions(+), 53 deletions(-)

diff --git a/quote.c b/quote.c
index 91122..64ff3 100644
--- a/quote.c
+++ b/quote.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -312,75 +312,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void write_name_quotedpfx(const char *pfx, size_t pfxlen,
 fputc(terminator, fp);
 }
 
-static const char *path_relative(const char *in, int len,
- struct strbuf *sb, const char *prefix,
- int prefix_len);
-
 void write_name_quoted_relative(const char *name, size_t len,
 const char *prefix, size_t prefix_len,
 FILE *fp, int terminator)
 {
 struct strbuf sb = STRBUF_INIT;
 
-name = path_relative(name, len, &amp;amp;sb, prefix, prefix_len);
+name = relative_path(name, prefix, &amp;amp;sb);
 write_name_quoted(name, fp, terminator);
 
 strbuf_release(&amp;amp;sb);
 }
 
-/*
- * Give path as relative to prefix.
- *
-&lt;/pre&gt;</description>
    <dc:creator>Jiang Xin</dc:creator>
    <dc:date>2013-05-18T03:18:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224754">
    <title>Re: [PATCH 1/2] remote-helpers: tests: use python directly</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224754</link>
    <description>&lt;pre&gt;
Yeap, I initially thought it would be tricky to implement in the
rather minimal Makefile, but it seems it wouldn't. Whoever, I still
find it useful that I don't have to run 'make' to test these, and I
think it's nice that people can download directly as the final name
('git-remote-hg'), and don't have to rename. And since these aren't
installed with 'make install' anyway, I don't see any big hurry.

Cheers.

&lt;/pre&gt;</description>
    <dc:creator>Felipe Contreras</dc:creator>
    <dc:date>2013-05-18T03:04:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224753">
    <title>Re: [PATCH 1/2] remote-helpers: tests: use python directly</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224753</link>
    <description>&lt;pre&gt;
Yes, this is correct.  Another way to skin this cat would be to do
search/replace in a Makefile to burn in the PYTHON_PATH similar to how
we do for the .sh scripts and other .py files in the main Makefile.
The remote helpers are in contrib/ so they do not go through the main
Makefile, which is the root cause.

Longer-term, it would be good to treat these uniformly, but this is no
worse for now.




--
David
&lt;/pre&gt;</description>
    <dc:creator>David Aguilar</dc:creator>
    <dc:date>2013-05-18T02:51:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.version-control.git/224752">
    <title>[PATCH] fetch: add new fetch.default configuration</title>
    <link>http://permalink.gmane.org/gmane.comp.version-control.git/224752</link>
    <description>&lt;pre&gt;When the user has an upstream branch configured to track a remote
tracking branch:

  % git checkout --set-upstream-to github/master

Doing a 'git fetch' without any arguments would try to fetch 'github',
because it's configured as current branch's remote
(branch.&amp;lt;current&amp;gt;.remote).

However, if we do something slightly different:

  % git checkout --set-upstream-to master

Doing a 'git fetch' without any arguments would try to fetch the remote
'.', for the same reason.

But, unlike the in the first instance, the second command would not
update any remote tracking branch, in fact, it would not update any
branch at all. The only effect is that it would update FETCH_HEAD.

FETCH_HEAD is a special symbol that is used to store the result of a
fetch. It can be used by other commands of git, specially 'git merge'.

It is however, barely mentioned in the documentation, and can be
considered a plumbing concept at best, that few Git users would benefit
from using, and indeed, quite likely very few use it, or are even &lt;/pre&gt;</description>
    <dc:creator>Felipe Contreras</dc:creator>
    <dc:date>2013-05-18T02:18:56</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.version-control.git">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.version-control.git</link>
  </textinput>
</rdf:RDF>
