• Stars
    star
    328
  • Rank 128,352 (Top 3 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 12 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automate and simplify the process of managing one-way read-only subtree splits.

Git Subsplit

Automate and simplify the process of managing one-way read-only subtree splits.

Git subsplit relies on subtree being available. If is not available in your version of git (likely true for versions older than 1.7.11) please install it manually from here.

Install

git-subsplit can be installed and run standalone by executing git-subsplit.sh directly.

git-subsplit can also be installed as a git command by:

./install.sh

Caveats

There is a known bug in the underlying git-subtree command that this script uses. Your disk will eventually run out of inodes because a cache directory isn't cleaned up after every run. I suggest you to create a cronjob to clean the cache directory every month:

0	0	1	*	*	 rm -rf <path to>/dflydev-git-subsplit-github-webhook/temp/$projectname/.subsplit/.git/subtree-cache/*

Hooks

GitHub WebHooks

Usage

Initialize

Initialize subsplit with a git repository url:

git subsplit init https://github.com/react-php/react

This will create a working directory for the subsplit. It will contain a clone of the project's upstream repository.

Update

Update the subsplit repository with current state of its upstream repository:

git subsplit update

This command should be called before one or more publish commands are called to ensure that the repository in the working directory has been updated from its upstream repository.

Publish

Publish to each subtree split to its own repository:

git subsplit publish \
    src/React/EventLoop:[email protected]:react-php/event-loop.git \
    --heads=master

The pattern for the splits is ${subPath}:${url}. Publish can receive its splits argument as a space separated list:

git subsplit publish "
    src/React/EventLoop:[email protected]:react-php/event-loop.git
    src/React/Stream/:[email protected]:react-php/stream.git
    src/React/Socket/:[email protected]:react-php/socket.git
    src/React/Http/:[email protected]:react-php/http.git
    src/React/Espresso/:[email protected]:react-php/espresso.git
" --heads=master

This command will create subtree splits of the project's repository branches and tags. It will then push each branch and tag to the repository dedicated to the subtree.

--update

Passing --update to the publish command is a shortcut for calling the update command directly.

--heads=<heads>

To specify a list of heads (instead of letting git-subsplit discover them from the upstream repository) you can specify them directly. For example:

--heads="master 2.0"

The above will only sync the master and 2.0 branches, no matter which branches the upstream repository knows about.

--no-heads

Do not sync any heads.

--tags=<tags>

To specify a list of tags (instead of letting git-subsplit discover them from the upstream repository) you can specify them directly. For example:

--tags="v1.0.0 v1.0.3"

The above will only sync the v1.0.0 and v1.0.3 tags, no matter which tags the upstream repository knows about.

--no-tags

Do not sync any tags.

--rebuild-tags

Ordinarily tags will not be synced more than once. This is because in general tags should be considered more or less static.

If for some reason tags need to be resynced from scratch (history changed so tags might point to somewhere else) this flag will get the job done.

-q,--quiet

As little output as possible.

-n,--dry-run

Does not actually publish information to the subsplit repos for each subtree split. Instead, display the command and execute the command with --dry-run included.

--debug

Allows you to see the logic behind the scenes.

Not Invented Here

Inspiration for writing this came from Guzzle's goal of providing components as individually managed packages. Having seen this already done by Symfony and liking how it behaved I wanted to try and see if I could solve this problem in a general case so more people could take advantage of this workflow.

Much time was spent checking out git-subtree and scripts written for managing React's components.

License

MIT, see LICENSE.

Community

If you have questions or want to help out, join us in the #dflydev channel on irc.freenode.net.

More Repositories

1

dflydev-dot-access-data

Given a deep data structure representing a configuration, access configuration by dot notation.
PHP
590
star
2

dflydev-fig-cookies

Cookies for PSR-7 HTTP Message Interface.
PHP
223
star
3

dflydev-doctrine-orm-service-provider

Doctrine ORM Service Provider
PHP
211
star
4

dflydev-markdown

PHP Markdown & Extra — DEPRECATED
PHP
171
star
5

dflydev-placeholder-resolver

Provides a mechanism to resolve placeholders from an arbitrary data source.
PHP
143
star
6

dflydev-dot-access-configuration

Given a deep data structure representing a configuration, access configuration by dot notation.
PHP
134
star
7

dflydev-embedded-composer

Embed Composer into another application
PHP
71
star
8

dflydev-apache-mime-types

Apache MIME Types
PHP
71
star
9

es-cqrs-broadway-workshop

Introduction to Event Sourcing & CQRS with Broadway workshop project
PHP
68
star
10

dflydev-hawk

Hawk — A PHP Implementation
PHP
67
star
11

embed-github-gist

Embed GitHub Gist WordPress plugin
PHP
47
star
12

dflydev-canal

Analyze content to determine the appropriate Internet media type
PHP
34
star
13

dflydev-git-subsplit-github-webhook

GitHub WebHook for Git subsplits managed by dflydev-git-subsplit.
PHP
28
star
14

just-run-phpunit

Allow developers to "just run phpunit."
27
star
15

check-runs-action

✅ GitHub Check Runs Action
TypeScript
15
star
16

dflydev-base32-crockford

Encode/decode numbers using Douglas Crockford's Base32 Encoding
PHP
13
star
17

dflydev-stack-basic-authentication

HTTP Basic Authentication Stack middleware
PHP
12
star
18

repose-php

Repose is an Object-Relational Mapping (ORM) library for PHP5. Repose implements a Unit of Work (UoW), an Identity Map and generated proxy classes to provide transparent unobtrusive persistence in PHP.
PHP
11
star
19

dflydev-stack-hawk

Hawk Stack middleware
PHP
10
star
20

dflydev-encrypted-fig-cookies

Encrypted Cookies for PSR-7 HTTP Message Interface.
PHP
7
star
21

dflydev-finite-state-machine

Yet another finite-state machine implementation
PHP
7
star
22

dflydev-github-gist-twig-extension

GitHub Gist Twig Extension
PHP
7
star
23

dflydev-util-antPathMatcher

Ant Path Matcher Utility
PHP
6
star
24

old-ninjagrl.com

Architecture demo application for ninjagrl.com
PHP
6
star
25

dflydev-symfony-finder-factory

Symfony Finder Factory
PHP
6
star
26

dflydev-event-store

Naive event store.
PHP
6
star
27

substrate-php

Substrate - An IoC/DI Container for PHP
PHP
5
star
28

dflydev-stack-firewall

Firewall Stack middleware
PHP
5
star
29

dflydev-psr0-resource-locator-service-provider

PSR-0 Resource Locator Service Provider
PHP
4
star
30

dflydev-identity-generator

Provide a standard interface for generating unique string-based identifiers.
PHP
4
star
31

dflydev-embedded-composer-application

Embedded Composer Example Application
PHP
4
star
32

dd-ci-ddauth

Dragonfly Development CodeIgniter Auth Add-on
PHP
4
star
33

composer-tutorial

PHP
3
star
34

jquery-ddNamespace

jQuery Namespace Add-on
JavaScript
3
star
35

dflydev-common-domain-model-identity

Identity for domain models.
PHP
3
star
36

dflydev-psr0-resource-locator-composer

Composer PSR-0 Resource Locator
PHP
3
star
37

dflydev-stack-authentication

STACK-2 Authentication Middlewares
PHP
3
star
38

dflydev-event-store-doctrine-dbal

Doctrine DBAL implementation of a naive event store.
PHP
3
star
39

repose-ci-php

Repose PHP ORM CodeIgniter Library
PHP
3
star
40

streamdeck-restreamio

🔌 Stream Deck Restream.io plugin
CSS
3
star
41

halo-php

Halo Web Application Framework for PHP
PHP
3
star
42

dflydev-psr0-resource-locator

PSR-0 Resource Locator
PHP
3
star
43

dflydev-github-gist-twig-bundle

GitHub Gist Twig Bundle
PHP
3
star
44

dflydev-twig-gitHub-gist-sculpin-bundle

Twig GitHub Gist Sculpin Bundle
PHP
2
star
45

dflydev.com

Dragonfly Development Website
HTML
2
star
46

dflydev-embedded-composer-core

[READ-ONLY] Subtree split of Dflydev\EmbeddedComposer\Core.
PHP
2
star
47

skittle-php

Skittle - A lightweight pure PHP template inclusion library
PHP
2
star
48

dd-ci-vendorlibs

Dragonfly Development CodeIgniter Vendor Libs Add-on
2
star
49

dd-configuration-php

Dragonfly Development PHP Configuration Library
PHP
2
star
50

dflydev-common-domain-model-identity-rhumsaa

Implementation of identity for domain models using rhumsaa/uuid.
PHP
2
star
51

safsi-php

Simple Abstract File System Interface
PHP
2
star
52

nimble-tutorial

Nimble Tutorial
Makefile
2
star
53

dflydev-embedded-composer-console

[READ-ONLY] Subtree split of Dflydev\EmbeddedComposer\Console.
PHP
2
star
54

ddvash

ddVash WordPress Theme
PHP
1
star
55

dflydev-snort

Sniff content to determine things about it.
PHP
1
star
56

dflydev-theme

Generic Theme Framework
PHP
1
star
57

dflydev-snort-buffer

[READ-ONLY] Subtree split of Dflydev\Snort\Buffer.
PHP
1
star
58

just-run-anything

Allow developers to "just run <anything>" where <anything> may exist at arbitrary paths *or* installed globally.
Shell
1
star
59

dflydev-theme-twig-extension

Theme Twig Extension
PHP
1
star
60

dflydev-doctrine-commands-service-provider

Doctrine Commands Service Provider
PHP
1
star
61

dflydev-composer-autoload

Composer Autoload Tools
PHP
1
star
62

lithe-php-single-site

Lithe - Single Site Application
PHP
1
star
63

raffl.io

CSS
1
star
64

dflydev-wp-theme

dflydev WordPress Theme
PHP
1
star
65

dd-image-php

dd-image is useful for doing simple image manipulation operations.
PHP
1
star
66

page-shortcodes

Page Shortcodes WordPress Plugin
PHP
1
star
67

lithe-php

Lithe - a lightweight web application framework for PHP built on Halo and Substrate
PHP
1
star
68

ddrem

ddRem WordPress Them
PHP
1
star
69

dflydev-core-php

Provides basic bootstrapping functionality such as resource locating and class loading.
PHP
1
star
70

dd-logging-php

Dragonfly Development PHP Logging Library
PHP
1
star
71

dd-uri-php

Dragonfly Development PHP URI Library
PHP
1
star
72

dd-idgen-php

Dragonfly Development PHP ID Generation Library
PHP
1
star
73

lithe-php-multiple-sites

Lithe - Multiple Sites Application
PHP
1
star
74

dflydev-common-domain-model-identity-ramsey

Implementation of identity for domain models using ramsey/uuid
PHP
1
star
75

d2code-core-wp-theme

d2code Core WordPress Theme
PHP
1
star
76

dflydev-identity-generator-dbal

Provides a Doctrine DBAL implemetnation of the identity generator data store.
PHP
1
star
77

dd-core-php

Dragonfly Development PHP Core Library
PHP
1
star
78

dflydev-theme-service-provider

Theme Service Provider
PHP
1
star
79

ddrem-iaous

Imagine Arts One's WordPress Theme. Based on ddRem.
JavaScript
1
star
80

dflydev-psr0-resource-locator-composer-service-provider

Composer PSR-0 Resource Locator Service Provider
PHP
1
star
81

dflydev-snort-textorbinary

[READ-ONLY] Subtree split of Dflydev\Snort\TextOrBinary.
PHP
1
star
82

ddknives

ddKnives WordPress Theme
PHP
1
star
83

dflydev-embedded-composer-bundle

[READ-ONLY] Subtree split of Dflydev\EmbeddedComposer\Bundle.
PHP
1
star
84

ddknives-offloc

Offloc's WordPress Theme. Based on ddKnives.
JavaScript
1
star
85

d2code-dflydev-wp-theme

d2code dflydev WordPress Theme
PHP
1
star