[arch-projects] [ABS] [PATCH v3 6/7] vcs prototypes: consistent coding style

lolilolicon lolilolicon at gmail.com
Wed Nov 9 23:29:29 EST 2011

On Wed, Nov 9, 2011 at 10:09 PM, Sebastian Schwarz
<seschwar at googlemail.com> wrote:
> On 2011-11-08 at 21:56 -0800, Linus Arver wrote:
>> Some vcs prototypes do
>>     cd repo && update
>> while others do it like
>>     cd repo
>>     update
>> to update an existing repo. It makes sense to have them all do it the
>> first way (there's nothing wrong with it, and it has better form).
> I agree with the consistency issue, but not with using the first
> way. makepkg is executed with `/bin/bash -e`[1].  Whenever
> a command returns a non zero exit status makepkg exits
> immediately.  See bash(1) or set(1p).  Thus conditional checks
> on single commands with && and || are seldomly required[2].

Actually, with `set -e', the second form is safer.  In the first form, if
`cd repo' fails, bash will NOT abort.  This is the relevant part in
bash(1) on `set -e':

The shell does not exit if the command that fails is part of the command
list immediately following a while or until keyword, part of the test
following the if or elif reserved words, part of any command executed in a
&& or || list except the command following the final && or ||, any command
in a pipeline but the last, or if the command's return value is being
inverted with !.

So yes, the `&&' form is totally busted.

> Even in the second case the "update" step is never reached.
> I personally find the second form easier to read, as one does
> not have to think about why the && was mixed in, and if this
> makes sense.
> [1]: http://projects.archlinux.org/pacman.git/commit/?id=b69edc1c3532816576198995675dd6ad53df74df
> [2]: http://projects.archlinux.org/pacman.git/commit/?id=2710b256cc260db6a0805c83fb3fcf9e32aa3d86

More information about the arch-projects mailing list