Как правильно установить инструменты в каталог git contrib?

Git включает набор инструментов, предоставляемых третьими сторонами. Я не уверен, как я должен правильно использовать эти инструменты.

Например, я хотел бы использовать git -subtree. Кажется, есть несколько способов, которыми я мог бы это использовать:

  • Скопировать на мой путь

    cp /path/to/git-subtree.sh /usr/local/bin/git-subtree
    chmod +x /usr/local/bin/git-subtree
    

    Хорошо работает, чувствует себя немного взломанным.

  • Symlink на мой путь

    chmod +x /path/to/git-subtree.sh
    ln -s /path/to/git-subtree.sh /usr/local/bin/git-subtree
    

    Также работает, чувствует себя немного менее хакивым

  • Использовать псевдоним git

    Добавьте в свой глобальный файл .gitconfig следующее:

    [alias]
        subtree = !/path/to/git-subtree.sh
    

    Затем снова добрый старый chmod:

    chmod +x /path/to/git-subtree.sh
    

    Работает, чувствует себя хорошо и git -ish.

  • Использовать Makefile

    В файле INSTALL.

    cd /path/to/git-subtree.sh
    make
    make install
    make install-doc
    

    Не работает для меня, он пытается установить на несуществующий путь. Возможно, это связано с тем, что я установил git с помощью homebrew вместо установки из источника? Я слишком ленив, чтобы исследовать; У меня уже есть три рабочих альтернативы.:)

Итак, мой вопрос: какой из них является предпочтительным способом установки git -contrib add-ons? Есть ли даже предпочтительный способ? Есть ли другой вариант, который я не предлагал лучше, чем те, которые перечислены выше?

Ответ 1

Вклад - это набор полезных вещей. Вы не устанавливаете их как пакет. Например, чтобы установить завершение вкладки, вы просто отправляете script из своего .bash_profile script. Каждый вкладчик в этой папке имеет свой собственный способ его использования.

как для компиляции git из источника

make
sudo make install

после установки всех необходимых предварительных условий.

Ответ 2

из git/contrib/git -subtree:

КАК УСТАНОВИТЬ git -subtree
   ==========================

Сначала создайте из верхнего исходного каталога.

Затем в contrib/subtree запустите:

 make
 make install
 make install-doc

Если вы использовали configure для создания основной сборки, то конструкция git -subtree будет    выберите эти настройки. В противном случае вам, скорее всего, придется предоставить    значение для префикса:

 make prefix=<some dir>
 make prefix=<some dir> install
 make prefix=<some dir> install-doc

Чтобы запустить первую копию экземпляра git -subtree в основной области сборки, чтобы    недавно построенный git может найти его:

 cp git-subtree ../..

Тогда:

 make test

Я просто подтвердил, что это работает:

  • Загруженный источник через существующий git
  • Установленные сборки deps

    $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
    
  • проверить последнюю ветвь релиза и построить

    $ git co v1.7.11.3  
    $ make prefix=/usr/local all  
    $ sudo make prefix=/usr/local install  
    
  • сборка и установка contrib/поддерева

    $ cd contrib/subtree  
    $ make  
    $ make install  
    $ make install-doc   
    
  • проверить, что все работает

    /usr/local/bin/git  
    [[email protected] subtree ((v1.7.11.3))]$ git --version  
    git version 1.7.11.3  
    

Проверьте, у нас есть последний git.

[[email protected] subtree ((v1.7.11.3))]$ git subtree  
usage: git subtree add   --prefix=<prefix> <commit>  
    or: git subtree merge --prefix=<prefix> <commit>  
    or: git subtree pull  --prefix=<prefix> <repository> <refspec...>  
    or: git subtree push  --prefix=<prefix> <repository> <refspec...>  
    or: git subtree split --prefix=<prefix> <commit...>

    -h, --help            show the help  
    -q                    quiet  
    -d                    show debug messages  
    -P, --prefix ...      the name of the subdir to split out  
    -m, --message ...     use the given message as the commit message for the merge commit  

options for 'split'  
    --annotate ...        add a prefix to commit message of new commits  
    -b, --branch ...      create a new branch from the split subtree  
    --ignore-joins        ignore prior --rejoin commits  
    --onto ...            try connecting new tree to an existing one  
    --rejoin              merge the new branch back into HEAD  

options for 'add', 'merge', 'pull' and 'push'  
    --squash              merge subtree changes as a single commit  

Проверьте, у нас есть поддерево.

Ответ 3

Вот простейшая вещь, которая сработала для меня, установив git -subtree на Ubuntu 12.10:

Получить код

git clone https://github.com/git/git.git --depth=1
cd git/contrib/subtree
make

"Установить" его в каталог git tools

sudo cp git-subtree /usr/lib/git-core/

Для man-страницы вам нужна asciidoc, которая не является небольшой установкой, но если она у вас есть:

make doc
gzip git-subtree.1
sudo cp git-subtree.1.gz /usr/share/man/man1

И что это.

Ответ 4

Все это выглядит немного сложнее, чем необходимо.
(возможно, потому что install.sh - последнее дополнение?)
Это то, что сработало для меня. Или так кажется.

# go to a directory where it ok to put temporary stuff
cd ~
git clone git://github.com/apenwarr/git-subtree.git
cd git-subtree/
# shell script does the job for you.
sudo sh ./install.sh
cd ..
# remove the git cloned stuff, now that all relevant things have been copied (we hope)
rm -r git-subtree

# test that it works
git subtree
# should print some help/usage stuff.

Есть инструкция, в основном говорящая о том, что:
https://github.com/apenwarr/git-subtree/blob/master/INSTALL

Я немного глуп, чем это. Мне нужно сказать, что мне нужно загрузить (git clone) вещь в произвольное место, прежде чем я запустим оболочку script, и что этот материал может быть удален позже.

Содержимое install.sh довольно показательно,
https://github.com/apenwarr/git-subtree/blob/master/install.sh
Если вы когда-либо захотите установить элемент git, который не предоставляет собственный install.sh, это может быть место для запуска.

Ответ 5

Все приведенное ниже в одной команде, проверено только в Ubuntu:

curl -L https://raw.github.com/gist/3426227 | bash

Теперь, как установить последний git с git в качестве пакета в ubuntu

Сделать это как пакет (предпочтительный):

sudo apt-get remove git -y
sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc

Если вы не устанавливаете asciidoc, проигнорируйте строку с make target 'install-doc' ниже.

Это проверит выпуск основного и последнего тегов и установите его checkinstall в качестве пакета.

git clone https://github.com/git/git.git
cd git
make prefix=/usr/local all
sudo checkinstall --pkgname=git make prefix=/usr/local install

то вкладчик:

cd contrib/subtree
make prefix=/usr/local
sudo checkinstall --pkgname=git-subtree make prefix=/usr/local install

... ответьте yes или y на вопрос, следует ли исключать файлы из домашней папки.

sudo checkinstall --pkgname=git-subtree-doc make prefix=/usr/local install-doc

... ответьте yes или y на вопрос, следует ли исключать файлы из домашней папки.

Теперь вы можете обрабатывать пакет git:

dpkg -r git

и пакет поддерева:

dpkg -r git-subtree
dpkg -r git-subtree-doc

Если вам не кажется, что половина гигабайта латексных скриптов perl запускает пространство жесткого диска после:

sudo apt-get remove asciidoc -y
sudo apt-get autoremove -y

Или все это (все раскладки)

sudo apt-get remove -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc
sudo apt-get autoremove -y

Благодаря @toddg для основных команд, которые мне нужны!

Я еще не смог сделать git subtree --help поиск правильной страницы man.