Skip to content

Commit

Permalink
update-microsoft-git: interface with apt-get on Linux
Browse files Browse the repository at this point in the history
The 'git update-microsoft-git' builtin already interfaces with the
git-for-windows/git upgrader on Windows and brew on macOS. Add an
integration with apt-get on Ubuntu. The implementation attempts to call
apt-get on all Linux machines, but it will report a failure when that is
not available. The two commands are:

1. sudo apt-get update
2. sudo apt-get upgrade microsoft-git

The first has an error message because that will likely only fail when
apt-get does not exist on the path (or the user fails to supply the sudo
password). The error condition for the second is passed to the user. It
is possible that a user installs a package manually and not through a
Microsoft feed, in which case the 'upgrade' command will fail with an
error message.

Extra newlines are added to provide whitespace between the Git messages
and the dense output from apt-get.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
  • Loading branch information
derrickstolee authored and ldennington committed Jan 12, 2022
1 parent 1034f4d commit 1c388bc
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions builtin/update-microsoft-git.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,26 @@ static int platform_specific_upgrade(void)
#else
static int platform_specific_upgrade(void)
{
error(_("update-microsoft-git is not supported on this platform"));
return 1;
int res;
struct strvec args = STRVEC_INIT;

printf("Updating apt-get with 'sudo apt-get update'\n\n");

strvec_pushl(&args, "sudo", "apt-get", "update", NULL);
res = run_command_v_opt(args.v, 0);
strvec_clear(&args);

if (res) {
error(_("'sudo apt-get update' failed; is apt-get installed?"));
return 1;
}

printf("\nUpgrading microsoft-git with 'sudo apt-get upgrade microsoft-git'\n\n");
strvec_pushl(&args, "sudo", "apt-get", "upgrade", "microsoft-git", NULL);
res = run_command_v_opt(args.v, 0);
strvec_clear(&args);

return res;
}
#endif

Expand Down

0 comments on commit 1c388bc

Please sign in to comment.