[pacman-dev] [PATCH] Remove -f short option for --force

Dave Reisner d at falconindy.com
Wed Oct 12 18:13:16 EDT 2011


On Wed, Oct 12, 2011 at 02:11:41PM -0500, Dan McGee wrote:
> This is not something that should be used on a frequent basis, and
> giving it a short option encourages use without making the drawbacks
> obvious. For the 1% of situations that require it, the 5 extra
> keystrokes are a fair price to pay.
> 
> Signed-off-by: Dan McGee <dan at archlinux.org>
> ---
> 
> Dave, Ionuț, and I are getting a bit fed up with people abusing this option and
> not realizing it skips a lot more than they think- if files move between
> packages, using this option will likely leave your system in a state you did
> not expect.

Yes! Fuck. Yes. A million times. YESSSSSS.

My only regret is that I can't be the author of this patch.

d

> Removing the short option for it at least makes people read the word "force"
> and maybe they will have some sense to step back and think about what they are
> doing first.
> 
> If we do decide to do this, I will update the *completion files which I just
> realized I did not do. I can also add in the pactests showing the difference
> between an -Su and -Suf operation when files change between packages.
> 
>  doc/pacman.8.txt    |    2 +-
>  src/pacman/conf.h   |    3 ++-
>  src/pacman/pacman.c |    6 +++---
>  3 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
> index 5985381..39551e1 100644
> --- a/doc/pacman.8.txt
> +++ b/doc/pacman.8.txt
> @@ -201,7 +201,7 @@ Transaction Options (apply to '-S', '-R' and '-U')
>  
>  Upgrade Options (apply to '-S' and '-U')[[UO]]
>  --------------------------------------------
> -*-f, \--force*::
> +*\--force*::
>  	Bypass file conflict checks and overwrite conflicting files. If the
>  	package that is about to be installed contains files that are already
>  	installed, this option will cause all those files to be overwritten.
> diff --git a/src/pacman/conf.h b/src/pacman/conf.h
> index 9e14925..325fbb6 100644
> --- a/src/pacman/conf.h
> +++ b/src/pacman/conf.h
> @@ -128,7 +128,8 @@ enum {
>  	OP_PRINTFORMAT,
>  	OP_GPGDIR,
>  	OP_RECURSIVE,
> -	OP_DBONLY
> +	OP_DBONLY,
> +	OP_FORCE
>  };
>  
>  /* clean method */
> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
> index d14b887..0326ef1 100644
> --- a/src/pacman/pacman.c
> +++ b/src/pacman/pacman.c
> @@ -180,7 +180,7 @@ static void usage(int op, const char * const myname)
>  		switch(op) {
>  			case PM_OP_SYNC:
>  			case PM_OP_UPGRADE:
> -				addlist(_("  -f, --force          force install, overwrite conflicting files\n"));
> +				addlist(_("      --force          force install, overwrite conflicting files\n"));
>  				addlist(_("      --asdeps         install packages as non-explicitly installed\n"));
>  				addlist(_("      --asexplicit     install packages as explicitly installed\n"));
>  				addlist(_("      --ignore <pkg>   ignore a package upgrade (can be used more than once)\n"));
> @@ -533,7 +533,7 @@ static int parsearg_upgrade(int opt)
>  	if(parsearg_trans(opt) == 0)
>  		return 0;
>  	switch(opt) {
> -		case 'f': config->flags |= ALPM_TRANS_FLAG_FORCE; break;
> +		case OP_FORCE: config->flags |= ALPM_TRANS_FLAG_FORCE; break;
>  		case OP_ASDEPS: config->flags |= ALPM_TRANS_FLAG_ALLDEPS; break;
>  		case OP_ASEXPLICIT: config->flags |= ALPM_TRANS_FLAG_ALLEXPLICIT; break;
>  		case OP_NEEDED: config->flags |= ALPM_TRANS_FLAG_NEEDED; break;
> @@ -599,7 +599,6 @@ static int parseargs(int argc, char *argv[])
>  		{"nodeps",     no_argument,       0, 'd'},
>  		{"deps",       no_argument,       0, 'd'},
>  		{"explicit",   no_argument,       0, 'e'},
> -		{"force",      no_argument,       0, 'f'},
>  		{"groups",     no_argument,       0, 'g'},
>  		{"help",       no_argument,       0, 'h'},
>  		{"info",       no_argument,       0, 'i'},
> @@ -625,6 +624,7 @@ static int parseargs(int argc, char *argv[])
>  		{"config",     required_argument, 0, OP_CONFIG},
>  		{"ignore",     required_argument, 0, OP_IGNORE},
>  		{"debug",      optional_argument, 0, OP_DEBUG},
> +		{"force",      no_argument,       0, OP_FORCE},
>  		{"noprogressbar", no_argument,    0, OP_NOPROGRESSBAR},
>  		{"noscriptlet", no_argument,      0, OP_NOSCRIPTLET},
>  		{"ask",        required_argument, 0, OP_ASK},
> -- 
> 1.7.7
> 
> 


More information about the pacman-dev mailing list