I really wish I could agree with the others saying "It just works" for dropbox sync. I have ran into many other issues around filename casing, file permissions, symlinks, etc in the past.
There's lots of 3rd party solutions for .dropboxignore personally I've used many of them and am not a fan of it (perl scripts, 3rd party apps, etc). I wish dropbox would natively implement .dropboxignore, but its probably never going to happen since only a small % of users voice their concerns for it. Average dropbox user probably doesn't care or doesn't know what a .dropboxignore is.
Also dropbox's 30 day version history did save me a couple times when I accidentally deleted something before committing. And not having to worry about losing the day's work even if your computer fails is good for peace of mind.
That said this hits a lot of edge cases with dropbox syncing since it's not built for this kind of workflow. Every time you do npm install it will cause thousands of files to sync. I have had the .git folder get corrupted when I start using it before it has fully synced. Or git would handle syncing internal symlinks/permissions/casing differently and I would need to rely on git to restore.
That and if you have to sync with another PC at home makes your computer sluggish for like half an hour while its syncing
My solution to you is to have your code repos in another storage solution (not dropbox). Unfortunately you would have to pay for that too
Or, you could use a built in IDE that has a autosave local revision history. I know most of the brainstorm products have this feature, such as PHPstorm. This would prevent accidentally deleting something before committing
For incomplete commits / switching computers, I can't really think of any workarounds for this unfortunately. Dropbox is very convenient here. The only solution is to use something like teamViewer and remote into your desktop PC from your laptop
I started out with just one folder syncing everything in '/home/kindone', that takes 30 minutes just to scan every time I started syncthing. Syncing over the LAN would not saturate my network unless it was a large file. That took about five hours to get everything synced when you have 700,000+ 4 - 400KiB c/c++ files. (It seems to send about 4 - 5 files at a time, someone correct me if I'm wrong.)
I removed '/home/kindone' and creating separate folders in syncthing for things like '/home/kindone/build/linux-4.14', /home/kindone/build/wine', and '/home/kindone/Dropbox'. Created about 65 different folder for various things, added them to my other machine on the LAN (that was annoying). Once they started syncing my 100Mbps LAN was saturated. Starting syncthing now takes 5 minutes to scan everything.
- the three host range from pretty fast (Coffeelake @ 5 GHz, 32 GiB, Samsung 950 Pro) to just ok fast (some i5 @ 3 GHz, 8 GiB, files from a fast NAS on 10 Gibps)
- I two syncthing folders, with a 90/10 split. Some 155k directories between them. The smaller one is scanned every 6 seconds, the other every hour.
- I have disabled relaying etc. so traffic is only p2p and LAN-only, static IPs.
Observations: Scanning is slow, which is expected. However, even when the scanning is done and Out of Date files are found, nothing happens. Zero bytes are transfered. The syncthing process is running, but at a fairly low rate. Sometimes pausing and resuming seems to start things going, but not always. Even when data is traveling, it's pretty slow, at most 70 MB/s, and usually way under this rate.
Another frustration with Syncthing is that there are entirely too many knobs to frob. I like how setting up Dropbox is stupidly simple and to set up a new host is 1) install Dropbox and 2) add my userid/password, done.
As I have honestly looked for a Dropbox alternative for what must be a decade (primarily because Dropbox, Inc. can read my files) it's truly astonishing to me that nothing else works as well. Of course I have considered writing my own clone, but there are other projects to work on and I don't discount how difficult the problem really is.
EDIT: rewording
EDIT2: FWIW, another "solution" I'm evaluating is to endorse Dropbox but run gocryptfs on top for sensitive files.
I guess you could ask on the forums, https://forum.syncthing.net about your issues and see what they say.