Как установить hub (git wrapper) в Ubuntu с работающим автозаполнением и man-документацией?

19

Согласно официальным документам, вы просто загружаете предварительно скомпилированный двоичный файл, но это manне позволяет работать с документацией и автозаполнением.

Брайс Дреннан
источник
Если вы ответили на ваш вопрос, вы можете принять любой из ответов.
Анвар

Ответы:

16

Вы можете использовать этот PPA для установки hubв виде пакета:

sudo add-apt-repository ppa:cpick/hub
sudo apt-get update
sudo apt-get install hub
Евгений Ярмаш
источник
Вы знаете, настраивает ли это автозаполнение и псевдоним git?
Брайс Дреннан
@Bryce Похоже, что последний пакет (2.2.9-0ubuntu0ppa1) содержит скрипт завершения bash, но не содержит сценариев manpages или postinstall.
Евгений Ярмаш
1
ppa: cpick / hub не обновлялся годами и предоставляет очень старую версию хаба
Mike Slinn
Более подробную информацию о том, как добавить репозиторий, содержащий хаб, можно найти здесь: github.com/github/hub/issues/718
Томас Дэвид Бейкер,
10

Концентратор доступен в оснастке сейчас. https://snapcraft.io/hub

Вы можете установить его с помощью sudo snap install --classic hub.

Максим Рейнвилл
источник
1
Жаль, что подсистема Windows для Linux не поддерживает оснастку
Майк Слинн
6

Установить концентратор

  1. Скачать Hub с Github

    https://github.com/github/hub/releases

  2. Извлеките это. Я извлек его в Apps/каталог в моем доме и переименовал в hub-linux. Итак, в моей настройке полный путь к binпапке/home/anwar/Apps/hub-linux/bin

  3. Теперь откройте ~/.bashrcфайл и добавьте двоичный путь к концентратору в $PATHпеременную окружения. Добавление строки, как показано ниже, будет работать.

    ### Adds Hub-linux
    export PATH="$PATH:$HOME/Apps/hub-linux/bin/"

Не забудьте использовать фактический путь в вашей настройке

Добавьте Завершение Bash

Чтобы добавить завершение bash, нам нужно указать bash исходный файл завершения, поставляемый с hub-archive. Файл завершения находится в etcпапке извлеченной папки концентратора. Для этого

Откройте .bashrcи напишите там эти строки

### Load Hub Linux bash completion
if [ -f $HOME/Apps/hub-linux/etc/hub.bash_completion.sh ] ; then
     . $HOME/Apps/hub-linux/etc/hub.bash_completion.sh
fi

Не забудьте заменить точный путь к hub.bash_completion.shфайлу в соответствии с вашими настройками

Теперь вы должны иметь возможность использовать завершение Hash Bash

Добавить справочную страницу Hub в manбазу данных

Справочная страница Hub на самом деле поставляется с архивом. Это в shareпапке. Чтобы добавить man-страницу, нам нужно поместить ее в каталог man-страницы.

Для этого откройте терминал и перейдите в извлеченный архив концентратора. Предположим , что ваш текущий каталог находится в том же каталоге , где хаба bin, share, README.mdпроживают, использовать эту команду , чтобы скопировать справочную страницу

sudo cp -r share/ /usr/
sudo chmod 644 /usr/share/man/man1/hub.1

Теперь вы можете использовать справочную страницу концентратора, используя man hubкоманду.

Если вы не можете сразу использовать man hub, используйте sudo updatedbдля обновления man db системы.

Анвар
источник
2

Этот скрипт должен выполнять работу на Ubuntu 16.04 с zsh.

# Install binary and documentation
wget https://github.com/github/hub/releases/download/v2.2.9/hub-linux-amd64-2.2.9.tgz
tar zvxvf hub-linux-amd64-2.2.9.tgz
sudo ./hub-linux-amd64-2.2.9/install

# Setup autocomplete for zsh:
mkdir -p ~/.zsh/completions
mv ./hub-linux-amd64-2.2.9/etc/hub.zsh_completion ~/.zsh/completions/_hub
echo "fpath=(~/.zsh/completions $fpath)" >> ~/.zshrc
echo "autoload -U compinit && compinit" >> ~/.zshrc

# add alias
echo "eval "$(hub alias -s)"" >> ~/.zshrc

# Cleanup
rm -rf hub-linux-amd64-2.2.9

Альтернативно для Ubuntu 16.04 с bash:

# Install binary and documentation
wget https://github.com/github/hub/releases/download/v2.2.9/hub-linux-amd64-2.2.9.tgz
tar zvxvf hub-linux-amd64-2.2.9.tgz
sudo ./hub-linux-amd64-2.2.9/install

# Setup autocomplete for bash:
mkdir -p ~/.bash/completions
mv ./hub-linux-amd64-2.2.9/etc/hub.bash_completion.sh ~/.bash/completions/_hub
echo "if [ -f ~/.bash/completions/_hub ]; then" >> ~/.bashrc
echo "    . ~/.bash/completions/_hub" >> ~/.bashrc
echo "fi" >> ~/.bashrc

# add alias
echo "eval "$(hub alias -s)"" >> ~/.bashrc

# Cleanup
rm -rf hub-linux-amd64-2.2.9

Тестовая установка:

hub version
Брайс Дреннан
источник
Ваш bash-скрипт содержит строку echo "eval "$(hub alias -s)"" >> ~/.zshrc. Это похоже на Zsh, а не на Bash? (Я новичок * NIX, так что я знаю)
Сэм Топ