[PATCH v2 0/2] git.c: improve readability | git-p4: minor optimization
- From
- Daniel Sonbolian via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Oct 7, 2022, 14:38 UTC
- Message-ID
- <pull.1355.v2.git.git.1665153486.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1355.git.git.1665056747.gitgitgadget@gmail.com>
git.c - made the code more readable in cmd_main by moving the spacial casing for "version" and "help" as part of the regular code path
git-p4.py - minor optimization in read_pipe_lines by first checking for errors, then reading data and/or decoding it from the pip stream
Daniel Sonbolian (2): git-p4: minor optimization in read_pip_lines git.c: improve code readability in cmd_main
git-p4.py | 10 +++++++--- git.c | 14 ++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-)
base-commit: bcd6bc478adc4951d57ec597c44b12ee74bc88fb Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1355%2Fdsal3389%2Frm-useless-else-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1355/dsal3389/rm-useless-else-v2 Pull-Request: https://github.com/git/git/pull/1355
Range-diff vs v1:
1: 71da6f53a44 ! 1: dd81a2cadec python file more pytonic, adjust "if" and "for"
@@
## Metadata ##
-Author: dsal3389 <dsal3389@gmail.com>
+Author: Daniel Sonbolian <dsal3389@gmail.com>
## Commit message ##
- python file more pytonic, adjust "if" and "for"
+ git-p4: minor optimization in read_pip_lines
- L371
- redesign few lines to get rid of the "else" statement
-
- L404
- moved the if statement below another if statement that
- checks if it should exit the code, only if it doesnt need to,
- then we can iterate the for loop and decode the text
-
- Changes to be committed:
- modified: git-p4.py
+ checking for an error condition before reading and/or decoding
+ lines from the pip stream to avoid unnecessary computation
Signed-off-by: Daniel Sonbolian <dsal3389@gmail.com>
## git-p4.py ##
-@@ git-p4.py: def read_pipe(c, ignore_error=False, raw=False, *k, **kw):
- """
- retcode, out, err = read_pipe_full(c, *k, **kw)
- if retcode != 0:
-- if ignore_error:
-- out = ""
-- else:
-+ if not ignore_error:
- die('Command failed: {}\nError: {}'.format(' '.join(c), err))
-+ out = ""
- if not raw:
- out = decode_text_stream(out)
- return out
@@ git-p4.py: def read_pipe_lines(c, raw=False, *k, **kw):
+
p = subprocess.Popen(c, stdout=subprocess.PIPE, *k, **kw)
pipe = p.stdout
++
++ if p.wait():
++ die('Command failed: {}'.format(' '.join(c)))
++
lines = pipe.readlines()
-- if not raw:
++ pipe.close()
++
+ if not raw:
- lines = [decode_text_stream(line) for line in lines]
- if pipe.close() or p.wait():
- die('Command failed: {}'.format(' '.join(c)))
-+ if not raw:
-+ lines = [decode_text_stream(line) for line in lines]
+- if pipe.close() or p.wait():
+- die('Command failed: {}'.format(' '.join(c)))
++ return [decode_text_stream(line) for line in lines]
return lines
2: c107ad9f6ff ! 2: 7fe59688018 removed else statement
@@
## Metadata ##
-Author: dsal3389 <dsal3389@gmail.com>
+Author: Daniel Sonbolian <dsal3389@gmail.com>
## Commit message ##
- removed else statement
+ git.c: improve code readability in cmd_main
- there is no need for the else statement if we can do it more
- elegantly with a signle if statement we no "else"
+ checking for an error condition whose body unconditionally exists first,
+ and then the special casing of "version" and "help" as part of the
+ preparation for the "normal codepath", making the code simpler to read
Signed-off-by: Daniel Sonbolian <dsal3389@gmail.com>
-- gitgitgadget