From: Philip Oakley Date: Wed, 29 May 2019 13:56:03 GMT Subject: Re: Need help merging unrelated histories Message-ID: <4e1ab4ad-f883-263a-2826-5a79bf75494b@iee.org> In-Reply-To: Hi Robert, A few comments to look at, which may help. On 28/05/2019 19:26, Robert Dailey wrote: > On Tue, May 28, 2019 at 8:35 AM Robert Dailey wrote: >> On Fri, May 24, 2019 at 12:11 PM Andreas Schwab wrote: >>> On Mai 24 2019, Robert Dailey wrote: >>> >>>> Can anyone provide some advice on how to properly restructure this >>>> repository to create some ancestry, as if all along a `master` existed >>>> and all release branches were based on this in a linear fashion? >>> How about using git replace --graft, then git filter-branch to make it >>> permanent? >> I unfortunately have little-to-no experience with low level plumbing >> commands. Could you provide an example of a series of commands to run? >> It will help me to figure out how to do it on my own for my specific >> use case. Thanks in advance. > Toyed around with it a bit, and tried with the script below. There > were no errors, but I noticed that it erased my `.gitattributes` file > on master that I committed before performing the graft. Why did it > remove the file? I assume I'm not doing this correctly. Please advise. > Thank you. > > ```sh > #!/usr/bin/env bash > set -ex > > if [[ ! -d Native_SDK.git ]]; then > git clone --bare git@github.com:powervr-graphics/Native_SDK.git > else > cd Native_SDK.git > git fetch > cd - > fi > > rm -rf test_repo > git clone Native_SDK.git test_repo > cd test_repo > > git checkout -f --orphan new_master Check here what is in the files system and index - see the caveat in the man page for the --orphan start point and potential use of `git rm -rf .` > echo '* text=auto' > .gitattributes Maybe also add some mega comment line to really see it.. > git add .gitattributes > git commit -m 'Add gitattributes file' Check what is actually committed, in case you have more/less than expected. > c=$(git log --oneline origin/3.4 | tail -1 | cut -d ' ' -f 1) Is this the one you expected (maybe gitk viewer ) > git replace --graft $c new_master Typing "git replace" without arguments, also lists all replace refs. - check what the new one is. Investigate. > git filter-branch HEAD..origin/3.4 Hmm is this the right range for re-write (not checked, just feels as if it's wrong). Maybe also need a local branch name for origin/3.4, just for comparing. > git merge --no-edit --no-ff origin/3.4 > ``` same again Hopefully the random thoughts may prompt something. Philip