josegonzalez / python-github-backup

backup a github user or organization
MIT License
1.3k stars 235 forks source link

Re-running the utility does not update the local files #269

Open itdoginfo opened 5 months ago

itdoginfo commented 5 months ago

Expected behavior: I run the utility again and the modified files are synchronized. But the files remain unchanged.

~$ github-backup --version
github-backup 0.45.1

Steps

  1. Create test repo. My test repo: https://github.com/itdoginfo/test-python-github-backup
  2. Run utility
    github-backup itdoginfo --all -f github_key -o /home/user/test-python-github-backup/ -R test-python-github-backup
  3. Check README.md
    
    ~$ cat test-python-github-backup/repositories/test-python-github-backup/repository/README.md 
    # test-python-github-backup

1

4. Add string to README.md `String after first backup`. Main branch
5. Re-run utility. Identical command from step three
6. Check README.md

~$ cat test-python-github-backup/repositories/test-python-github-backup/repository/README.md

test-python-github-backup

1



Maybe I don't understand something and I need to use some additional flags?
whwright commented 3 months ago

Existing repos will only have their remotes fetched: https://github.com/josegonzalez/python-github-backup/blob/c3e470b34eeff30c1b5a285c49b9b28a15f427bd/github_backup/github_backup.py#L1324

so checkout the remote branch or merge it into the local copy. git merge origin/main for example

paranerd commented 2 months ago

Thank you for opening this issue. Just ran into the same problem (?)

Is there a way to either replace git fetch with git pull or run an additional (optional) git merge after fetching?

I'm using this on a Synology NAS and would like to be able to browse the latest files in the file explorer instead of having to go into the terminal to git merge manually.

Thanks!

whwright commented 2 months ago

This has come up several times, duplicate issue here https://github.com/josegonzalez/python-github-backup/issues/196

You can't assume a merge will always be clean, so IMO this introduces unnecessary complexity to handle potential conflicts and isn't really necessary.

paranerd commented 2 months ago

Yes, I do understand. However, how about at least giving the option. In my case, for example, I use the tool for archive purposes only so will not very likely ever run into any conflicts whatsoever.

But as long as my data is still backed up even without the additional merge I'm fine with the status quo 😊

josegonzalez commented 2 months ago

As mentioned in the readme:

This project is considered feature complete for the primary maintainer @josegonzalez. If you would like a bugfix or enhancement, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if you'd like to sponsor the work instead.

pa-0 commented 1 month ago

@itdoginfo For clarity, when the script fetches 'remote' branches, the git descriptors can be misleading, because those 'remote' branches are actually available locally. You can checkout a remote branch (which, again, is saved on your local drive at this point) or if you're not concerned with losing anything in your local branches, you can run a simple PowerShell script to loop through all repositories, running git merge on each.

Also, FYI: https://github.com/earwig/git-repo-updater <- Another python script you can simply run after backup in lieu of PowerShell. You could even add a line to the end of github-backup that simply calls this script to achieve the functionality you're requesting.