Hi, On Thu, 15 Nov 2007, Ping Yin wrote: > On Nov 15, 2007 2:16 PM, Johannes Schindelin <Johannes.Schindelin@xxxxxx> wrote: > > 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: If this works for you, I am all the more happy for you. I thought that you wanted to be able to go to a certain revision and get the same working directory/directories. (But that is not what you get...) > 1. move submodule subB outside > mv subB /newpath/to/subB > git-commit subB Strictly speaking, you do not have to move it outside. > 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 No need to play games with GIT_INDEX_FILE, as far as I can tell. > 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 If you plan to do away with subB, you do not need to specify it... Just use FETCH_HEAD, directly after the fetch. > 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 The git-cherry call is not really necessary, right? The two repos have no common history (not even common patches). Besides, I think that what you did is just a complicated way of doing a rebase. But be aware that checking out older versions of the superproject will still have the submodule! Ciao, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html