Migrating my Salesforce org backups from Eclipse to VSCode without messing up Git
Tags: salesforce, database, vscode, eclipse
Published: 2019-11-07 20:05:06

---
title: Migrating my Salesforce org backups from Eclipse to VSCode without messing up Git
description: "Git-friendly Eclipse to VSCode for Salesforce"
published: true
date: 2019-11-07 15:00:00 UTC
tags: salesforce,database,vscode,eclipse
canonical_url: https://katiekodes.com/eclipse-vscode-migrate-git/
---

Here's how I migrated all my "Salesforce configuration metadata backups" from Eclipse to VSCode without my 5-year-old `Git` history really caring.

This is a bit of a quick-and-dirty low-quality post; sorry.  Publishing it on the blog in case I forgot an org and need it again myself.  😆

Note that this only worked because I didn't need to convert **mdapi**-style metadata files to **sfdx**-style metadata files _(I didn't have any `objects` in `src`)_.

[Need help getting VSCode installed and set up?  Try these steps on a brand new dev org to get your bearings.](https://katiekodes.com/salesforce-vscode-setup-editing-metadata/)

{% link https://dev.to/katiekodes/setting-up-vscode-to-edit-salesforce-metadata-126l %}

1. Back up the whole Eclipse folder to some directory far, far away in case I majorly mess up.
2. Delete every folder but `src` (which is a sub-folder of the tracking folder) and `.git`; stage & commit & push in Git with SourceTree.
	* Everything else is just stuff that has to do with Eclipse.
3. Delete cruft from `src`; stage & commit & push in Git with SourceTree.
	* If I have `src` things I don't want in my new environment, like artifacts from packages, get rid of them now.
	* They just get in the way of Git successfully tracking renames in the next step _(it has limits of how many file renames it can track at a time)_.
4. Rename `src` to `default`.
	* Then create a new folder `main` at the same level of the filesystem as `default`; drag `default` inside of `main`.
	* Then create a new folder `force-app` at the same level of the filesystem as `main`; drag `main` inside of `force-app`.
	* Then stage in Git with SourceTree.
5. Hopefully I have a "yay, the renames worked!"  moment.
	* If so, commit & push in Git with SourceTree.
	* If not, troubleshoot _(e.g. try staging smaller batches for multiple commits; make sure "rename tolerance" settings are all the way up in my Git installation; etc.)_.
6. In VSCode, `SFDX: Create Project with Manifest` `name_it_whatever` _(don't use spaces or VSCode will yell at you)_ in `C:\Users\myusername\Documents\Repos\wrapper_folder_name`
7. Close the folder in VSCode
8. In File Explorer, rename `C:\Users\myusername\Documents\Repos\wrapper_folder_name\name_it_whatever\` to `C:\Users\myusername\Documents\Repos\wrapper_folder_name\Meaningful Name\`
9. Open `C:\Users\myusername\Documents\Repos\wrapper_folder_name\Meaningful Name\` in VSCode
10. Connect this project to the Salesforce org it represents with `SFDX: Authorize an Org`.
	* No need to actually retrieve any metadata from the server yet _(although it certainly might, so maybe set the package.xml minimal?)_
11. Delete the `C:\Users\myusername\Documents\Repos\wrapper_folder_name\Meaningful Name\force-app` folder
12. Copy over `force-app` and `.git` from the org I've been tearing apart into the new folder `C:\Users\myusername\Documents\Repos\wrapper_folder_name\Meaningful Name`.
13. Rename the old folder so SourceTree can't find it and prompts me for the new folder; choose the new folder.
	* If it doesn't prompt, close SourceTree hand-edit `C:\Users\myusername\AppData\Local\Atlassian\SourceTree\bookmarks.xml`.
	* But I probably just forgot to do the whole "renaming the old folder" bit, honestly.
		* SourceTree won't prompt if I just leave it empty of a `.git` sub-folder; it'll merely act up.
14. Set up `C:\Users\myusername\Documents\Repos\wrapper_folder_name\Meaningful Name\.gitignore` the way I like it.
	* e.g. before `#Salesforce cache` add the chunk below these instructions.
15. Test:
	* Delete a file; make sure it ends up in Git potential changes.
	* Retrieve from package and make sure it comes back onto the filesystem and disappears from Git potential changes.)
16. PROFIT.

```
# Other
.sfdx/orgs/MYUSERNAME@EXAMPLE.COM/metadataTypeInfos.json
.vscode/
.gitignore
config/project-scratch-def.json
sfdx-project.json
.forceignore
.prettierignore
.prettierrc
README.md
```

---

**Related Reading**:  Note that the links below ended up being overkill for me, since I didn't have `object` folders in `src` anyway.  Still, I thought it was worth noting their existence -- for example, I learned about setting my Git rename tolerance up higher.

* Salesforce's [Migrate from Force.com IDE to Salesforce Extensions for VS Code](https://developer.salesforce.com/tools/vscode/en/getting-started/migrate-from-forcecom-ide)
* Nathan Totten's [Converting Salesforce Metadata to Source Format While Maintain Git History](https://ntotten.com/2018/05/11/convert-metadata-to-source-format-while-maintain-git-history/)