git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: How to change a submodue as a subdirectory?

From
Ping Yin <pkufranky@gmail.com>
Date
Nov 15, 2007, 08:14 UTC
Message-ID
<46dff0320711150014x4a35975eqc53ef1fce7d40b18@mail.gmail.com>
In-Reply-To
<Pine.LNX.4.64.0711150614380.4362@racer.site>
On Nov 15, 2007 2:16 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 7 quoted lines
> Provided you do not kill the repository of the submodule (you have some
> public repo for that, right?) you will not lose anything, since the
> history of the superproject has pointers to the submodule.
>
> But I guess that you want something different... You probably want to
> rewrite history as if the submodule had not been a submodule at all,
> right?
Yeah, this actually what i want. Now i find a way:
1. move submodule subB outside
    mv subB /newpath/to/subB
    git-commit subB
2. git-filter-branch to rename all files in subA repository to subB
directory (say subB/subB).
       cd newpath/to/subB &&
       git filter-branch --index-filter \
               'git ls-files -s | sed "s-\t-&subB/-" |
                       GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
                               git update-index --index-info &&
                mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
3. in directory of super project superA, git-fetch repository subB to
branch subB
   cd path/to/superA && git-fetch /newpath/to/subB master:subB
4. git-cherry-pick each commit  (except the root commit) of branch
subB to the super project superA
    git-cherry HEAD subB | awk '{print $2}' | sed -n '2,$ p' | while
read name; do git cherry-pick $name; done
Show 5 quoted lines
>
> Ciao,
> Dscho
>
>
-- 
Ping Yin
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 5 of 7 in “How to change a submodue as a subdirectory?”
  1. Ping YinNov 14, 2007
  2. Alex RiesenNov 14, 2007
  3. Ping YinNov 15, 2007
  4. Johannes SchindelinNov 15, 2007
  5. Ping YinNov 15, 2007
  6. Johannes SchindelinNov 15, 2007
  7. Ping YinNov 15, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.