Re: [Qgit RFC] commit --amend
From: Marco Costalba <hidden>
Date: 2016-06-15 22:43:19
On 7/1/07, Jan Hudec [off-list ref] wrote:
On Mon, Jun 11, 2007 at 07:45:51 +0200, Marco Costalba wrote:quoted
On 6/11/07, Jan Hudec [off-list ref] wrote:quoted
However, I am currently not sure how to handle errors. If the current commit fails, it will show a message box with it's output, but I can't see where it is generated. It seems it's somewhere inside MyProcess, so I don't have to do anything special though, right?
You have 2 ways to start a git command:
QGit::run() and QGit::runAsync()
The first starts the command and wait for completion, a bool is
returned to indicate success as example
if (!run("git read-tree --reset HEAD"))
return false;
The second one is use to start a command and return immediately, so
it's used for long commands that should be non-blocking, as example:
if (!runAsync("git diff-index -r -m --patch-with-stat HEAD"))
return false;
In the latter case success it means the command has been _started_ successfully.
A bool is the only flag returned, because error detect is done at
lower level, in MyProcess::sendErrorMsg() in file myprocess.cpp that
handles the low level of running an external process and is called by
run().
In case of an error MyProcess::sendErrorMsg() is called to inform the
GUI (a popup dialog box) about the error and the stderr output
received.
What is an error ? :-)
It's not so trivial due to different OS and git commands behaviours
regarding stderr and exiting codes, check the comment at the beginning
of MyProcess::on_finished() in myprocess.cpp to see *how* qgit detects
an error has occurred and informs upstream.
So the bottom line is: no, you don't have to do anything special. The
returned 'false' value from run() call is for your use only, if
needed, you don't have to propagate upstream to let user be informed.
Hope this helps.
Marco
P.S: Why 'git-commit --amend -F' it's explicitely forbidden?