Skip to main content

Periodically sync files from a remote git repository.

Project description

A utility to poll a remote git repository and maintain local state according simple rules such as the HEAD of a specified branch, or the latest tag conforming to a regular expression.

1 Installation

The pygitsync package is available from PyPI. Installing into a virtual environment is recommended.

python3 -m venv .venv; .venv/bin/pip install pygitsync

2 Credential management

One relatively straight-forward means of managing credentials for SSH based access to git repositories is using ssh-agent. Before starting the git-sync process, take the following steps.

eval $(ssh-agent)
ssh-add <path to keyfile to be used by pygitsync>
# type the passphrase for your SSH key as prompted
git-sync [options]

git-sync will now use the ssh agent session to acquire access to the SSH key.

Having a human type in a passphrase may not work very well for automation, so further effort will likely be needed to automatically acquire the passphrase from some kind of encrypted vault, and then apply that passphrase to the ssh agent session. A work-around may be to use an empty-passphrase SSH key, but this is not recommended at all for maintaining good security.

3 Getting started

Having just installed pygitsync you really just want to get a remote repo syncing, right? You need to create a configuration file - the default location is .pygitsync.yaml and it needs to look something like this. In this case we’re just syncing the default (main) branch of the pygitsync repo itself.

---
repo:
  pattern_type: branch
  pattern: main
  url: git@gitlab.com:ci-cd-devops/pygitsync.git
application:
  exception_sleep_seconds: 10
  is_daemon: false
  sleep_interval_seconds: 30

Using this configuration the remote repo will be pulled every 30 seconds to check for updates in the main branch. The pattern type “branch” means that the sync will always update to the latest HEAD pulled from the remote. Disabling the is_daemon setting means that the process will run indefinitely in the foreground (useful to run inside containers).

Running indefinitely means that the process will never exit for exceptions. If an exception occurs very early in the process then the exception handling loop could run very quickly, consuming large amounts of needless CPU. The exception_sleep_seconds setting puts a delay in that exception handling oop to prevent such a scenario from occurring.

The repo will be initially be cloned to the current working directory of the git-sync executable, or use the --working argument to specify an alternate location for the repo working directory.

Take a look at other configuration arguments using git-sync --help.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygitsync-0.1.0.post19.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

pygitsync-0.1.0.post19-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file pygitsync-0.1.0.post19.tar.gz.

File metadata

  • Download URL: pygitsync-0.1.0.post19.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.15

File hashes

Hashes for pygitsync-0.1.0.post19.tar.gz
Algorithm Hash digest
SHA256 dd49b09fb7a09346cfc48f38a8c116226dc83ed64de7ca30edfb0df8866770d3
MD5 abd1f3f9a6d5254694273d2ac91148ab
BLAKE2b-256 e312a40ded72e996f8a04ba3c731895e5bdc2955d60715c291425dde40c47b75

See more details on using hashes here.

File details

Details for the file pygitsync-0.1.0.post19-py3-none-any.whl.

File metadata

File hashes

Hashes for pygitsync-0.1.0.post19-py3-none-any.whl
Algorithm Hash digest
SHA256 81face6ab246e7715be4568996cbd6df4826ebe690fcc8b296651561a60cdb5d
MD5 efb7bf39e387fdf0d61d7868ab03e06a
BLAKE2b-256 885d3618bb09df49bbd4e1977f4caaa09430661cceac660c6df918b201ffc3b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page