14

I have a private GitHub repo (which I can't share here) cloned locally. I want to split a subfolder in this repo into a new subtree repo. I'm following these instructions Using Git subtrees for repository separation (under Splitting code into its own repository).

My specific command is:

> git subtree split -P .\plugins\rg-feed-client -b rg-feed-client

however it fails with exactly 24 "assertion failed" error messages that look like this:

1/     26 (0)2/     26 (1)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-fee
3/     26 (2)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-feed-client ]
...
26/     26 (25)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-feed-client ]

If I try any other subfolder, the exact same happens. I have no idea what may be wrong here... HELP!

My repo has 2 remotes: origin, and a remote for an existing subtree that I added to my repo.

Jorge Orpinel Pérez
  • 6,361
  • 1
  • 21
  • 38
  • p.s. the same error happens with or without the branch part, -b rg-feed-client – Jorge Orpinel Pérez Aug 28 '14 at 22:56
  • 3
    you should not have trailing and leading characters on the -P parameter -P plugins/rg-feed-client and as you said below you should not use backslashes but forward slashes – Michael Nov 14 '14 at 20:29

2 Answers2

16

This was probably due to the backslashes in --prefix (I was running Windows back then.)

Metropolis
  • 2,018
  • 1
  • 19
  • 36
Jorge Orpinel Pérez
  • 6,361
  • 1
  • 21
  • 38
7

Split -P can't gracefully handle directory path . Use following command instead -

git subtree split --prefix=plugins/rg-feed-client -b rg-feed-client

A few points to remember -

  1. Avoid prefixing ./ with path i.e instead of ./plugins/rg-feed-client use plugins/rg-feed-client

  2. Avoid any trailing / after the path , i.e NO plugins/rg-feed-client/

sapy
  • 8,952
  • 7
  • 49
  • 60