{"id":37081424,"url":"https://github.com/optinsoft/git-deployer","last_synced_at":"2026-01-14T09:53:26.805Z","repository":{"id":317148086,"uuid":"1065872608","full_name":"optinsoft/git-deployer","owner":"optinsoft","description":"Python tool for deploying output/build folders with git","archived":false,"fork":false,"pushed_at":"2025-09-29T06:34:08.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T07:20:53.933Z","etag":null,"topics":["deploy","git","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/optinsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T15:44:38.000Z","updated_at":"2025-09-29T06:34:12.000Z","dependencies_parsed_at":"2025-09-29T07:20:55.676Z","dependency_job_id":"c9ddb1df-d275-494c-8583-51b0c65a3f51","html_url":"https://github.com/optinsoft/git-deployer","commit_stats":null,"previous_names":["optinsoft/git-deployer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/optinsoft/git-deployer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optinsoft%2Fgit-deployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optinsoft%2Fgit-deployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optinsoft%2Fgit-deployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optinsoft%2Fgit-deployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/optinsoft","download_url":"https://codeload.github.com/optinsoft/git-deployer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optinsoft%2Fgit-deployer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deploy","git","python"],"created_at":"2026-01-14T09:53:26.239Z","updated_at":"2026-01-14T09:53:26.793Z","avatar_url":"https://github.com/optinsoft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git Deployer\n\nA utility for automated deployment of generated static websites (documentation, help guides, etc.) using Git.\n\n## Advantages\n\n- **Simplicity**: Deploy with a single command.\n- **Reliability**: Uses proven Git mechanisms.\n- **Versatility**: Suitable for any hosting service that supports Git repositories (GitHub Pages, GitLab Pages, your own server, etc.).\n- **Incremental Deployment**: Only modified files are transferred.\n\n## Installation\n\n```bash\npython -m pip install git-deployer\n```\n\n## Usage\n\n### Initialization (first run)\n\n1. You generate a static site (for example, using Docusaurus, Sphinx, Jekyll, MkDocs).\n2. Initialize a Git repository in the directory containing the generated site (e.g., `_build/html`).\n\nExample:\n\n```bash\ncd _build/html\ngit init\n```\n\n3. Using Git, add a new remote repository and specify which remote branch your local branch should track.\n\nExample:\n\n```bash\ngit remote add origin https://github.com/owner/repository.git \ngit branch --set-upstream-to origin/main main\n```\n\n4. Run `deploy`.\n\n```bash\ndeploy .\n```\n\n5. The utility publishes the files to the remote repository.\n\nTo publish, Git Deployer executes the following commands:\n\n```bash\ngit add .\ngit commit -m \"Site updated: %Y-%m-%d %H:%M:%S\"\ngit push\n```\n\n`%Y-%m-%d %H:%M:%S` will be replaced by the current date and time, ex.: `2025-09-29 10:44:15`\n\n### Configuring with deploy_config.yml (alternative initialization)\n\nAn alternative initialization method involves creating a `deploy_config.yml` configuration file in the root directory of your project and then running the `deploy _build/html` command. If the `_build/html` directory does not already contain a Git repository and the `git_init` option has been set in `deploy_config.yml`, Git Deployer will automatically execute `git init`. It will then configure the remote repository, branch, and (optionally) the username and email according to the configuration file.\n\nConfiguration example:\n\n```yaml\ndeploy:\n  remote:\n    name: 'origin' \n    url: 'https://github.com/owner/repository.git'\n  branch: 'master'\n  name: owner_name\n  email: owner@email\n  message: 'new commit at %Y-%m-%d %H:%M:%S'\n  git_init: True\n  force_push: True\n```\n\nThe `force_push` option allows you to deploy the site to a remote repository using `git push --force`. This command bypasses the standard safety checks that prevent pushing when the remote history diverges from the local history. If, even with the `force_push`, you get the error message \"remote: error: denying non-fast-forward refs/heads/master (you should pull first)\", you need to disable `receive.denyNonFastForwards` in remote repo. Find the [receive] section within the config file. If `denyNonFastForwards` is set to true, change it to false. If the setting doesn't exist, you can add it.\n\n```\n[receive]\n    denyNonFastForwards = false\n```\n\nYou can configure the git commit message. It can contain date and time format specifiers, for example: `%Y-%m-%d %H:%M:%S`, which will be replaced by the current date and time.\n\nIf the project contains multiple sites, each with its own individual deployment settings (remote repository, branch, etc.), you can specify them in the `sites` section, for example:\n\n```yaml\ndeploy:\n  sites:\n    -\n      path: site_to_deploy\n      deploy:\n        remote:\n          name: 'github'\n          url: 'https://github.com/owner/site_to_deploy.git'\n```\n\n### Everyday deployments\n\n```bash\ndeploy _build/html\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptinsoft%2Fgit-deployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foptinsoft%2Fgit-deployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptinsoft%2Fgit-deployer/lists"}