[PATCH 0/5, resend] fork/exec removal series
- From
Johannes Sixt <johannes.sixt@telecom.at>
- Date
- Oct 3, 2007, 20:09 UTC
- Message-ID
- <1191442180-15905-1-git-send-email-johannes.sixt@telecom.at>
- In-Reply-To
- <200709302340.17644.johannes.sixt@telecom.at>
Here is a series of patches that removes a number fork/exec pairs. They are replaced by delegating to start_command/finish_command/run_command.
I've addressed all issues that were raised. However, concerning whether git_connect() shoud return NULL or not, I decided to stay with my earlier approach to return NULL for non-forking connections. Consequently, I had to remove all error checks because there is now no unique value that can indicate failure. The motivation is that the alternate approach (to always return non-NULL for any successful connection and NULL for failure) would benefit *only* libification; but *if* that ever happens, a major audit (and possibly) rewrite in the callers has to be done anyway because currently we are juggling, leaking, and double-closing file descriptors like mad - in error paths and normal paths.
Patch 2 depends on Patch 1; otherwise, there are no dependencies. The series goes on top of 'master'. Note that 'next' has an additional call of git_connect() in the new transport.c.
builtin-archive.c | 8 +-- cache.h | 4 +- connect.c | 128 +++++++++++++++++++++++++--------------------------- convert.c | 30 +++---------- diff.c | 38 +-------------- fetch-pack.c | 43 +++++------------ peek-remote.c | 8 +-- send-pack.c | 8 +-- 8 files changed, 96 insertions(+), 171 deletions(-)
-- Hannes