git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-filter-branch.txt: mention absolute path for scripts in --tree-filter

From
Jari Aalto <jari.aalto@cante.net>
Date
Mar 15, 2010, 11:32 UTC
Message-ID
<87k4td95xm.fsf@jondo.cante.net>
In-Reply-To
<4B9DFE36.3010707@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
Show 23 quoted lines
> Jari Aalto schrieb:
>
>> Signed-off-by: Jari Aalto <jari.aalto@cante.net>
>> ---
>>  Documentation/git-filter-branch.txt |    3 +++
>>  1 files changed, 3 insertions(+), 0 deletions(-)
>> 
>> diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt
>> index 020028c..01bd0ad 100644
>> --- a/Documentation/git-filter-branch.txt
>> +++ b/Documentation/git-filter-branch.txt
>> @@ -91,6 +91,9 @@ OPTIONS
>>  	is then used as-is (new files are auto-added, disappeared files
>>  	are auto-removed - neither .gitignore files nor any other ignore
>>  	rules *HAVE ANY EFFECT*!).
>> ++
>> +In case the <command> is a shell script, provide an absolute path.
>> +An example: --tree-filter 'sh /path/to/filter.sh'
>
> Your choice of words is ambiguous: The --tree-filter is not the name of a
> shell script, but rather the shell script itself; the example you gave is
> just a shell script that happens to run only a shell on a file whose name
> must be specified as an absolute path.
Full context was:
    --tree-filter <command>::
            This is the filter for rewriting the tree and its contents.
            The argument is evaluated in shell with the working
            directory set to the root of the checked out tree.  The new tree
            is then used as-is (new files are auto-added, disappeared files
            are auto-removed - neither .gitignore files nor any other ignore
            rules *HAVE ANY EFFECT*!).
    +
    In case the <command> is a shell script, provide an absolute path.
    An example: --tree-filter 'sh /path/to/filter.sh'
Show 7 quoted lines
>
> But doesn't the recommendation to use absolute paths apply not only to
> --tree-filters, but
>
> - to all filters;
>
> - to all references to external files that the filters make.
I don't know.
Show 5 quoted lines
> I'm saying "recommendation" because git-filter-branch does not switch
> directory ad lib., so theoretically, it would be possible to use relative
> paths, even though the base of the relative paths would be non-obvious
> because it is from inside a temporary directory named ".git-rewrite/t"
> that is allocated next to .git.

The problem was that I was trying to use a sell script for athe manipulation:

    cd <gir repo>
    git filter-branch  --tree-filter "sh ../filter.sh" HEAD
Which didn't. It needed absolute path:
    cd <gir repo>
    git filter-branch  --tree-filter "sh $(pwd)/filter.sh" HEAD

And that didn't work quit either. Script was run, but paths weren't no longer relative to the "working dir" I was cd'd to:

    rm  file \
        dir/file \
        dir/file \
        ..

So, someone please explain how the paths should be expressed in shell script and we'll improve the docs.

Jari
Previous: Johannes SixtNext: Johannes Sixt
Message 3 of 5 in “git-filter-branch.txt: mention absolute path for scripts in --tree-filter”
  1. git-filter-branch.txt: mention absolute path for scripts in --tree-filterJari Aalto, Mar 15, 2010
  2. Johannes SixtMar 15, 2010
  3. Jari AaltoMar 15, 2010
  4. Johannes SixtMar 15, 2010
  5. Junio C HamanoMar 15, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.