Skip to main content

Copying Git Repos with History

Sometimes the Internet is great - you can find exactly what you're looking for, quickly and easily. Other times, it takes you down a rabbit hole of different sites that may provide the right answer but, more often than not, the 90% rule is often true. 

So when we decided to consolidate our multiple git repos into a single repo on Azure Devops, I figured this should be relatively easy. Note: it isn't built into git and while the final process isn't that tough to follow, finding the best answer was extremely frustrating and time-consuming.

After several wrong paths, I came across this post. This covered the process in great detail - including some safety steps to ensure you don't overwrite incorrect files. I'm finding that sometimes the dev posts on Medium are just as good as StackOverflow but provide the necessary context that may not be available there. I want to note it here as it took a very long time to find that article.

The key is the --allow-unrelated-histories parameter to the git merge command but in many other posts, there were lots of references to other parameters and additional steps. While those options may work, I prefer the approach with fewer commands and parameters. 

The starting point:

DocsRepo: Documentation Files
SourceRepo: Source Files for Project 1
ScriptsRepo: Database Scripts

Our desired end state was

GoalRepo:
    Documentation
    Source
    Scripts


Steps:

Go to your new Repo

git remote add --fetch oldDocs https://MyOrg@dev.azure.com/MyOrg/Project/_git/DocsRepo
git merge oldDB/master --allow-unrelated-histories

This copies the files into the new repo but in their root folder.

mkdir Docs

Then manual copy (using VS Code or mv) all of the files into the new Docs folder.

git commit -m "Copied Docs folder"
git push

git remote rm oldDocs

Rinse and repeat.

The history in DevOps doesn't appear to show the whole history but when you look at it in DevOps, the history shows "Copied Docs Folder" but then has a "Rename history" link under it. Clicking this link shows the entire history.



Problem solved! Thanks to Ayushya


Comments

Popular posts from this blog

Blogs and RSS come to Microsoft.com

MS has just introduced their portal and it's pretty comprehensive. Nothing quite like learning that some people use AIM instead of MSN messenger, or that there really may be a need for supporting 4 monitors ( Cyrus Complains ) However, it's really a great sign that MS is serious about supporting the blogging community which seems to have um, exploded in size in the past year. Blogs and RSS come to Microsoft.com

FoxInCloud Stats

FoxInCloud sent this link a while back about their statistics regarding visits to their site: http://foxincloud.com/blog/2017/12/27/VFP-community-lessons-from-foxincloud-site.html What's interesting here is the breakdown of people. Yes, I think it's understandable that the Fox community is getting older. Another factor is the growth of the mobile and web environments taking over development. These environments really do push people towards the newer non-SQL or free SQL/hosted environments but more towards hosted storage options like Amazon and Google. A tool like FoxInCloud that helps MOVE existing applications to the cloud inherently competes with those environments. But FoxInCloud also allows developers to extend their application further by giving them a starting point using Javascript and the basic CSS (such as Bootstrap). If you're not rebuilding your application from scratch, it's certainly a great step forward. FoxPro VFP

Facebook Revolt - imeem alternatives?

When Scoble noted how Facebook under major revolt , I immediately thought of a site I found yesterday. The value offered by Facebook's feeds however do seem very cool - if only they had been smart and made them opt-in, instead of opt-out. I have been impressed though with Facebook's opening of their API's - they certainly get it that they need to open it up to developers. I haven't really explored this other site, beyond my first look. In some ways, I think the whole social networking site thing is just silly , but this site (imeem) definitely showed some value. I could find music (as posted by the artist), it worked in Firefox and it allowed people to rank, add to delicious and more. And when I'm looking at someone, I can see what they're up to (or rather what they allow us to see). Anyways, you may want to check it out.