Как правильно установить инструменты в каталог 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.