Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement the option to use Splitsh #32

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

thomasmeeus
Copy link
Contributor

Hi,

This PR adds the ability to use Splitsh as a binary to do the actual splitting instead of the really slow subtree split command. This was also a feature requested in #31

We're currently using this for 2 days in production already to split a monolithic puppet repo into 100 separate repositories and it's working fine. I saw a performance increase of about 5-10 times over the subtree split command.

Two downsides of this PR:

  • We do not use tags and I didn't find the option in Splitsh either. Because of this tag-support is disabled when Splitsh is activated.
  • I converted all tabs to spaces, because tabs are ugly. Hence the large set of changed lines :-)

@TomasVotruba
Copy link

TomasVotruba commented Jan 30, 2018

I'm writing PHP wrapper over git subsplit and I came across this interesting idea.
What state is this in?

Would it create dependency on Go? In my experience, it's yet another language to install just to split repositories. Just saying.

@simensen Are you able to review this PR and tell us what could be the next step?

@thomasmeeus
Copy link
Contributor Author

Just letting you know that this is still running fine multiple times a day. The performance is great (thx to splitsh). No Go dependency is required. It uses a precompiled binary version.

@TomasVotruba
Copy link

Sounds interesting. I'd like to try it, but I need to publish tags as well.

Symfony uses the same script for tags as well, right?

How to do that?

@thomasmeeus
Copy link
Contributor Author

I don't know what Symfony currently uses. Tags work fine with subtree split. Only splitsh doesn't support it (back at the time I wrote this. I would have to check the current version)
A few years ago I splitted a Symfony repo with this tool, but only with subtree split in the backend

@TomasVotruba
Copy link

TomasVotruba commented Jan 31, 2018

I see.

Only splitsh doesn't support it (back at the time I wrote this. I would have to check the current version)

Could you verify that please? If a tag support would be in and go is not needed, I'd pick this solution to my package.

@stof
Copy link

stof commented Jun 9, 2020

According to the readme of the splitsh/lite tool, --target and --origin support using tags references too

@luckydonald
Copy link

But with a pre-build go package we'd have to create one for every known system? Darwin, Windows, *Nix, that special thing raspberry pies use, etc?

In the past Go was known for dropping platform support quite without care, so I'd be a bit hesitant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants