lite, 将存储库拆分为只读独立存储库

分享于 

6分钟阅读

GitHub

  繁體 雙語
Split a repository to read-only standalone repositories
  • 源代码名称:lite
  • 源代码网址:http://www.github.com/splitsh/lite
  • lite源代码文档
  • lite源代码下载
  • Git URL:
    git://www.github.com/splitsh/lite.git
    Git Clone代码到本地:
    git clone http://www.github.com/splitsh/lite
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/splitsh/lite
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    子树拆分器

    splitsh-lite 取代了内置的命令,以使单独的独立存储库独立地读取独立存储库方便快捷。

    :为什么我需要这里工具

    启动项目时,是否将所有代码存储在一个存储库中? 或者你创建许多独立存储库?

    两种策略都工作良好,同时也有缺点。 通过提供工具自动将单个存储库同步到独立存储库, splitsh有助于同时使用两种。

    收费 splitsh是一个子项目,提供更快的命令实现,它帮助创建一个或者多个主存储库的一个或者多个子目录的独立库。

    如果你想了解更多关于 monorepo-vs-manyrepos,看一下我在 dotScale ( 或者阅读幻灯片。) 上给你的4-minute 闪电。 或者看更长版本的DrupalCon。 ["The Monorepo - Storing your source code has never been so much fun"] ( 存储源代码的Monorepo从来没有那么有趣过) 也是一个很好的资源。

    安装

    快速入门的方法是下载一个针对你平台的二进制插件。

    你也可以手动安装它。

    用法

    假设你希望将存储库的lib/ 目录拆分为它自己的分支;从"母版"git存储库( 裸或者克隆),运行:

    splitsh-lite --prefix=lib/

    拆分的sha1 将在执行结束时显示:

    SHA1=`splitsh-lite --prefix=lib/`

    sha1可以用于创建分支或者将提交推送到新存储库。

    通过通过 --target 选项传递分支 NAME,自动为拆分创建分支:

    splitsh-lite --prefix=lib/--target=branch-name

    如果对存储库进行了新提交,则通过再次运行相同的命令来更新拆分。 更新要快得多,因为保留了已经分割的提交的缓存。 高速缓存可以为保证相同代码的两个拆分总是会导致相同的历史,而对于每个提交都会产生相同的sha1

    默认情况下,splitsh-lite 拆分当前签出分支,但可以通过通过 --origin 标志(。拆分裸存储库时强制) 显式传递不同的分支来拆分分支:

    splitsh-lite --prefix=lib/--origin=origin/master

    你甚至不需要从Git资源库目录中运行命令,如果你通过了 --path 选项:

    splitsh-lite --prefix=lib/--origin=origin/1.0 --path=/path/to/repo

    可用选项:

    • 如果使用 --prefix,则可以将拆分内容放在目标库的子目录中,通过传递多个标志拆分多个目录;

    • --path 是要拆分( 默认情况下当前目录)的存储库的路径;

    • --origin 是源( 可以是 HEADheads/xxxtags/xxxorigin/xxx 或者任何 refs/xxx的任何Git引用)的Git引用;

    • --target 为分割( 可以是 HEADheads/xxxtags/xxxorigin/xxx 或者任何 refs/xxx的任何Git引用)的顶端创建一个参考;

    • --progress 显示进度条;

    • --quiet 取消所有在 stderr ( 从自动脚本运行时有用) 上的输出;

    • --scratch 刷新缓存( 当分支被强制推送或者缓存损坏时有用) ;

    git subtree split 迁移

    git subtree split 迁移到 splith-lite 很容易,因为两个工具生成相同的sha1

    但是,请注意,旧版本的git subtree split 使用了破坏算法,因此生成的sha1 值不同于最新版本。 你可以通过 --git 标志模拟这些版本。 使用 <1.8.2 或者 <2.8.0,具体取决于要模拟的git subtree split 版本。

    手动安装

    如果你想为 splitsh-lite 贡献或者使用它作为库,首先需要安装 libgit2:

    go get -d github.com/libgit2/git2gocd$GOPATH/src/github.com/libgit2/git2go
    git checkout next
    git submodule update --init
    make install

    然后,编译 splitsh-lite:

    go get github.com/splitsh/lite
    go build -o splitsh-lite github.com/splitsh/lite

    如果一切正常,在当前目录中应该有一个 splitsh-lite 二进制文件。


    STA  rep  REPO  Repository  STAN  SPL  
    相关文章