1
votes

On all my laptops and desktops, I have a directory at /home/sajan/Code where all my active projects and repositories live.

/home/sajan/Code/repository1 /home/sajan/Code/repository2 /home/sajan/Code/repository3

...etc...

Up until now I've relied on pushing and pulling to and from my Gitlab server to keep my projects in sync across all my laptops and desktops. It's worked great.

However, today I decided to add my code folder to my ownCloud server and sync it across all my laptops and desktops the same way I do for /home/sajan/Documents, /home/sajan/Music, and a few application config directories to keep all my devices in sync.

By syncing my code folder and git repositories in this way, do I risk borking any repositories? I'm 99% confident I'm not, since everything is in .git/, and there are not external databases or log files that need to be updated. Just making sure though.

I'm only doing this because sometimes I forget to pull changes down from my Gitlab server on a different laptop or desktop and start making local changes. Which is fine, I can merge easily, but if everything were sync'd automatically when I logged into my computer it would be great.

Another option I thought of would be to write a bash script that executed at login and went into each of my repositories and ran git pull, but I decided against this because of legitimate non-fast-forward merges.

TLDR;

If I sync my repositories across computers using something similar to Dropbox, rather than pushing/pulling to and from an central repository, am I risking borking any respository?

2

2 Answers

0
votes

By syncing my code folder and git repositories in this way, do I risk borking any repositories?

Possibly, since:

  • the sync involve copying/sync'ing a lot more file that you would with git pull
  • you are sync'ing everything including local hooks, and private files
    • the hooks might be environment specific
    • the private files might contain sensitive information which is not supposed to be added and pushed

I would rather go with your second option (script for push/pull for all repos)

0
votes

When we do git push, it does not push to our working files. It pushes somewhere else and if we want those changes in our working files we need to sync with those files.

git checkout <file_name>

So, I think you can add this command in addition to your script to make sure you pushes and as well you see the changes (this command to be run on the system where you pushed).

For more help checkout the below link: How to sync working directory with master directory, when somebody push change to our local system?