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

Re: [PATCH 2/3] p7300: added performance tests for clean

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Apr 6, 2015, 22:09 UTC
Message-ID
<CAPig+cRSv0qsctJ_2-ZH2y_E7kU_f787ate_5CnnKHE+vBddNw@mail.gmail.com>
In-Reply-To
<5522EF29.9000008@web.de>
On Mon, Apr 6, 2015 at 4:40 PM, Torsten Bögershausen <tboegi@web.de> wrote:
Show 23 quoted lines
> On 2015-04-06 13.48, Erik Elfström wrote:
>> Signed-off-by: Erik Elfström <erik.elfstrom@gmail.com>
>> ---
>> diff --git a/t/perf/p7300-clean.sh b/t/perf/p7300-clean.sh
>> new file mode 100755
>> index 0000000..3f56fb2
>> --- /dev/null
>> +++ b/t/perf/p7300-clean.sh
>> @@ -0,0 +1,37 @@
>> +#!/bin/sh
>> +
>> +test_description="Test git-clean performance"
>> +
>> +. ./perf-lib.sh
>> +
>> +test_perf_large_repo
>> +test_checkout_worktree
>> +
>> +test_expect_success 'setup untracked directory with many sub dirs' '
>> +     rm -rf 500_sub_dirs 50000_sub_dirs clean_test_dir &&
>> +     mkdir 500_sub_dirs 50000_sub_dirs clean_test_dir &&
>> +     for i in $(seq 1 500)
> I think "seq" is bash-only, and can be easily replaced by "test_seq"
test_seq is definitely desirable. 'seq' is not present on some systems I use.
>
>> +     do
>> +             mkdir 500_sub_dirs/dir$i
You may want:
    mkdir 500_sub_dirs/dir$i || return $?
to catch failure of 'mkdir'.
>> +     done &&
>> +     for i in $(seq 1 100)
>> +     do
>> +             cp -r 500_sub_dirs 50000_sub_dirs/dir$i
Ditto:
    cp -r 500_sub_dirs 50000_sub_dirs/dir$i || return $?
Show 16 quoted lines
>> +     done
>> +'
>> +
>> +test_perf 'clean many untracked sub dirs, check for nested git' '
>> +     rm -rf clean_test_dir/50000_sub_dirs_cpy &&
>> +     cp -r 50000_sub_dirs clean_test_dir/50000_sub_dirs_cpy &&
>> +     git clean -q -f -d  clean_test_dir/ &&
>> +     test 0 = $(ls -A clean_test_dir/ | wc -l)
>
> Is the "ls -A" portable on all systems:
> http://pubs.opengroup.org/onlinepubs/009695399/utilities/ls.html
>
> My feeling is that the "emptiness" of a directory can by tested by simply removing it:
>> +     git clean -q -f -d  clean_test_dir/ &&
>> +     rmdir clean_test_dir
> (And similar below)

There's also the test_dir_is_empty() function which makes the intent even clearer than 'rmdir'.

Previous: Torsten BögershausenNext: erik elfström
Message 9 of 14 in “Improving performance of git clean”
  1. 0/3 Improving performance of git cleanErik Elfström, Apr 6, 2015
  2. 1/3 t7300: add tests to document behavior of clean and nested gitErik Elfström, Apr 6, 2015
  3. Eric SunshineApr 6, 2015
  4. erik elfströmApr 7, 2015
  5. Eric SunshineApr 7, 2015
  6. Torsten BögershausenApr 7, 2015
  7. 2/3 p7300: added performance tests for cleanErik Elfström, Apr 6, 2015
  8. Torsten BögershausenApr 6, 2015
  9. Eric SunshineApr 6, 2015
  10. erik elfströmApr 7, 2015
  11. 3/3 clean: improve performance when removing lots of directoriesErik Elfström, Apr 6, 2015
  12. Eric SunshineApr 6, 2015
  13. erik elfströmApr 7, 2015
  14. Eric SunshineApr 8, 2015

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.