23

Git 包括一组由第三方提供的工具。我不确定我应该如何正确使用这些工具。

例如,我想使用git-subtree。似乎有很多方法可以使用它:

  1. 复制到我的路径

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

    工作正常,感觉有点hacky。

  2. 符号链接到我的路径

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

    也有效,感觉稍微不那么hacky

  3. 使用 git 别名

    将以下内容添加到我的全局 .gitconfig 文件中:

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

    然后又是好老 chmod:

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

    工作,感觉一切都很好和 git-ish。

  4. 使用 Makefile

    根据安装文件

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

    对我不起作用,它会尝试安装到不存在的路径。也许这是因为我使用自制软件安装了 git而不是从源代码安装?我懒得去调查;我已经有了三个可行的选择。:)

所以我的问题是,其中哪一个是安装 git-contrib 附加组件的首选方式?有没有首选的方法?有没有我没有建议的比上面列出的更好的选择?

4

5 回答 5

10

来自 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

我刚刚验证了这行得通:

  1. 通过现有的 git 下载的源代码
  2. 安装的构建部门

    $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
    
  3. 查看最新的发布分支并构建

    $ git co v1.7.11.3  
    $ make prefix=/usr/local all  
    $ sudo make prefix=/usr/local install  
    
  4. 构建和安装贡献/子树

    $ cd contrib/subtree  
    $ make  
    $ make install  
    $ make install-doc   
    
  5. 验证一切正常

    /usr/local/bin/git  
    [todd@montreal-01 subtree ((v1.7.11.3))]$ git --version  
    git version 1.7.11.3  
    

检查,我们有最新的 git。

[todd@montreal-01 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  

检查,我们有子树工作。

于 2012-07-23T13:31:20.760 回答
8

这是对我有用的最简单的方法,在 Ubuntu 12.10 上安装 git-subtree:

获取代码

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

将其“安装”到 git 工具目录中

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

对于手册页,您需要 asciidoc 这不是一个小型安装,但如果您有它:

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

就是这样。

于 2012-11-27T09:31:05.077 回答
4

Contribs 是有用的东西的集合。您不会将它们作为软件包安装。例如,要安装选项卡补全,您只需从 .bash_profile 脚本中获取该脚本。该文件夹中的每个贡献者都有自己的使用方式。

至于从源代码编译 git

make
sudo make install

安装所有先决条件后。

于 2012-07-22T20:01:50.427 回答
2

所有这些看起来都比必要的复杂一些..
(也许是因为 install.sh 是最近添加的?)
这对我有用。或者看起来是这样。

# go to a directory where it's 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

我比那更愚蠢。我需要被告知,在运行 shell 脚本之前,我必须将东西下载(git clone)到任意位置,并且可以在之后处理这些东西。

install.sh 的内容很有启发性,
https://github.com/apenwarr/git-subtree/blob/master/install.sh
如果你想安装一个不提供 install.sh 的 git thingie就其本身而言,这可能是一个开始的地方。

于 2013-02-28T23:24:49.780 回答
0

一个命令中的所有以下内容,仅在 Ubuntu 中测试:

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

现在,这里是如何在 ubuntu 中使用 git 作为包安装最新的 git

将其作为一个包进行(最好):

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' 的行。

这将检查 master/latest 标记版本并将其与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

...回答yesy回答是否从主文件夹中排除文件的问题。

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

...回答yesy回答是否从主文件夹中排除文件的问题。

您现在可以处理 git 包:

dpkg -r git

和子树包:

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

如果您不想在之后有半 GB 的乳胶 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查找正确的手册页。

于 2012-08-22T14:26:25.170 回答