Re: Need help merging unrelated histories
From: Philip Oakley <hidden>
Date: 2019-05-29 13:56:07
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 [off-list ref] wrote:quoted
On Fri, May 24, 2019 at 12:11 PM Andreas Schwab [off-list ref] wrote:quoted
On Mai 24 2019, Robert Dailey [off-list ref] wrote:quoted
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.#!/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