350 Commits
Author SHA1 Message Date
Andreas Wachter 0d5c09332d add a backdown for gists too 2026-08-28 15:56:03 +02:00
Andreas Wachter 002be7a6e8 fixed lfs partial backup (#426) 2026-08-28 15:52:10 +02:00
Dmitriy Prikhodko 7d810a4a1b Fix GitHub App authentication for LFS-backed local mirrors (#425)
* fix: use fresh GitHub App auth for LFS mirror updates

* fix: satisfy lint checks
2026-08-19 09:46:36 +02:00
Ryan ed581d75d9 fix GitLab mirroring visibility, URL parsing, and ref pushes (#423) 2026-08-18 20:34:43 +02:00
gdm257 9fc59f0c48 Support WebDAV destination (#359)
* feat(destination): add WebDAV destination

Add a stdlib-only WebDAV destination mirroring the s3/azureblob flow:
bare-clone into a temp dir, optional zip, upload via HTTP PUT with Basic
auth, and prune stale remote files via PROPFIND/DELETE.

- types: WebDAVRepo struct, Destination.WebDAV field, Count()
- webdav: new package (UploadDirToWebDAV, DeleteObjectsNotInRepo)
- main: dispatch loop on par with azureblob
- conf.example.yml + gickup_spec.json: document the new destination

* feat: auto retry


Auto retry network errors and some situations.

Servers that disable Depth: infinity (Sabre/DAV, Nextcloud and others
answer 400/403/501) failed listing and could not prune stale files.
Try infinity once, fall back to recursive PROPFIND walk on rejection.

* refactor: use gowebdav client

Classify retry errors and make backoff interruptible.
2026-08-18 19:54:39 +02:00
Thomas Christlieb c4d33b44f9 Fix 415 pruning old folders does count non repo folders (#420)
* slightly refactor prune function for testing

* add tests for pruning function

* fix keep-Logic: All timestamp-prefixed-Folders will be grouped into one generation to keep.
Fixes #415
Side effect: This will delete all folders `<timestamp>.<anything>` in the repo directory, not only `timestamp.issues`

* correct tests for CI, fix typo

* add test for no pruning needed
2026-08-10 18:46:27 +02:00
dependabot[bot] a7689baf63 Bump github.com/go-git/go-git/v5 from 5.19.1 to 5.19.2 (#422)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.19.1 to 5.19.2.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Changelog](https://github.com/go-git/go-git/blob/main/HISTORY.md)
- [Commits](https://github.com/go-git/go-git/compare/v5.19.1...v5.19.2)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.19.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 18:41:09 +02:00
Thomas ChristliebandThomas Christlieb 2a2fd35ae3 fix #414: path.Dir() does not work on windows-style paths. (#418)
Co-authored-by: Thomas Christlieb <thomas.christlieb@aptean.com>
2026-07-30 09:55:27 +02:00
Yorgos SaslisandAndreas Wachter 66eaf7bd2c Adds Radicle destination (#413)
* Adds Radicle destination

This destination allows mirroring repositories into the storage of a local
[Radicle](https://radicle.network) node.

Requires `git` + Radicle Command Line Interface (CLI) tools installed,
i.e. `rad` and `git-remote-rad` binaries. See https://radicle.network/install .

The repository is initialized with `rad init` on the first run and pushed
through the `git-remote-rad` helper afterwards, so the refs are signed with
the key of the Radicle profile.

Because every backup run works on a fresh temporary clone, each run has to
find the Repository ID (RID) created for an upstream on an earlier run:
every mirror records its upstream URL in a "dev.gickup" extension of the
signed Radicle identity document `payload`, and the storage is scanned for a
repository whose recorded source matches and whose refs are signed by this
profile's key — comparable to the existence lookups the forge destinations
make against their APIs, just against local storage. (Local-first, For The Win!)

Unlike other forge destinations we cannot use go-git for pushing,
because Radicle repositories are only reachable through the `git-remote-rad`
remote helper, which go-git does not support. All storage-touching
operations therefore shell out to the system `git` and `rad` binaries, so
identity creation and signed-refs handling stay inside the Radicle tooling.

Signed-off-by: Yorgos Saslis <yorgos.work@proton.me>

* fixup! Adds Radicle destination

Signed-off-by: Yorgos Saslis <yorgos.work@proton.me>

* fixup! Adds Radicle destination

Signed-off-by: Yorgos Saslis <yorgos.work@proton.me>

---------

Signed-off-by: Yorgos Saslis <yorgos.work@proton.me>
Co-authored-by: Andreas Wachter <andreas.wachter@buddyspencer.monster>
2026-07-29 15:41:13 +02:00
Michael HerberthandMichael Herberth dfee42bf30 Add configurable GitHub Enterprise URL support (#411)
Co-authored-by: Michael Herberth <michael.herberth@sarstedt.com>
2026-07-24 20:54:45 +02:00
dependabot[bot] 88d9c3981f Bump golang.org/x/crypto from 0.51.0 to 0.52.0 (#410)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.51.0 to 0.52.0.
- [Commits](https://github.com/golang/crypto/compare/v0.51.0...v0.52.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.52.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 21:18:51 +02:00
Jonathan Van Eenwyk 7dc1fa0d72 fix: gitlab organization filtering not including nested subgroups (#409)
Gitlab supports nesting subgroups up to 20 levels deep. However, these
two filters were actually applied to projects in the provided
organization/group as well as projects in any immediate subgroup, but
not to projects in more deeply nested subgroups. Presumably, the
original intention of these filters was that the entire
organization/group would be either included or excluded, not only
projects in the group and its immediate subgroups.

Fix by using ListDescendantGroups() to get all descendant/nested groups.
Also, use gitlab.ScanAndCollect() to handle paginated results.
2026-07-08 07:58:58 +02:00
Andreas Wachter e585cdea3e updated documentation (#405) v0.10.45 2026-06-22 10:59:37 +02:00
Andreas Wachter 029f4e9fb4 extend ~ to home directory (#404) 2026-06-22 09:45:16 +02:00
Bernat MutandAndreas Wachter d5caefb310 Feature/discussion 391 add GitHub app support (#396)
* feat: Add GitHub App support for authentication in configuration and code

* feat: Enhance GitHub App support by updating repository fetching logic and authentication method

* test: Update dependencies, enhance configuration handling, and add GitHub client tests

- Updated dependencies in go.sum to latest versions for improved stability and security.
- Added a defer statement to close the configuration file in readConfigFile function to prevent resource leaks.
- Implemented unit tests for GenRepo's HasAppAuth method to validate authentication conditions.
- Created new tests for the GitHub client to verify behavior with and without authentication tokens, including handling of invalid and missing private key files.

* feat: Exclude G101 gosec warning for github/github_test.go

* fixed go.mod and go.sum

---------

Co-authored-by: Andreas Wachter <andreas.wachter@buddyspencer.monster>
2026-06-16 14:12:59 +02:00
Hildebrand Soethoudt c8a812e5c3 Rework of BitBucket authentication (#402)
* Rework of the BitBucket source authentication:

* Renamed 'user' to 'organization' as it better reflects the bitbucket architecture
* Added email config field, used fetch the workspace repo list with API token auth
* Added error log line in case workspace repo list fetch fails
* go-bitbucket version bump to 0.10.0

* fixed linting error

* ran go mod tidy to cleanup unused deps
2026-06-12 08:23:29 +02:00
Bernat Mut fa7816143d feat: Add support for S3 AWS Credentials Chain (#394)
* feat: Add support for S3 static credentials configuration

- Updated S3Repo struct to include UseStaticCreds field
- Refactored credential retrieval logic in UploadDirToS3 and DeleteObjectsNotInRepo functions
- Added tests for S3Repo and credential retrieval functions

* docs: add changes for use_static_creds

* fix: lint issues

* fix: exclude gosec sanitized file path
2026-06-02 21:10:28 +02:00
Jan Loewe ee95e89de5 Fix unintentional data loss when zip is false and keep greater than or one (#399) 2026-06-02 21:00:20 +02:00
dependabot[bot] 5d3622e30f Bump github.com/go-git/go-git/v5 from 5.19.0 to 5.19.1 (#397)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.19.0 to 5.19.1.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Changelog](https://github.com/go-git/go-git/blob/main/HISTORY.md)
- [Commits](https://github.com/go-git/go-git/compare/v5.19.0...v5.19.1)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.19.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 16:35:45 +02:00
Bernat Mut 617acfda96 chore: bump action versions in workflows to latest stable releases (#395)
* chore: bump action versions in workflows to latest stable releases

* fix: add revive var-naming exclusion for zip_test.go

* fix: correct formatting and structure in .goreleaser.yml

* fix: ensure fetch-depth is set for actions/checkout in workflow

* fix: update GoReleaser conditions for tag-based releases in workflow
2026-05-18 11:17:28 +02:00
Andreas Wachter 97c1d192bd fixed exclude org race condition (#393) v0.10.44 2026-05-14 19:11:11 +02:00
Andreas Wachter d3fd3e4717 go mod tidy v0.10.43 2026-05-13 10:10:42 +02:00
Hildebrand Soethoudt 5f03e6cfa6 updated ktrysmt/go-bitbucket dependency to v0.9.100, that includes the BitBucket API deprecation fix as part of release v0.9.96 (#389) 2026-05-13 10:04:32 +02:00
dependabot[bot] 17c2361e3d Bump github.com/go-git/go-git/v5 from 5.18.0 to 5.19.0 (#387) 2026-05-11 18:14:58 +02:00
Andreas Wachter 3369a9fa37 fix gitlab format issue (#386) v0.10.42 2026-05-04 12:15:38 +02:00
Andreas Wachter b34eae7ec8 updated ktrysmt/go-bitbucket v0.10.41 2026-04-25 09:56:52 +02:00
ShalokShalom f8e569f780 Add Forgejo/Codeberg (#382) 2026-04-20 17:19:40 +02:00
Andreas Wachter 019c2fdee7 update go 2026-04-20 10:24:20 +02:00
Andreas Wachter 9daf4cef3d updated bitbucket and gitlab code, updated dependencies (#381) 2026-04-20 10:18:02 +02:00
dependabot[bot] 9f4d798ee1 Bump github.com/go-git/go-git/v5 from 5.17.1 to 5.18.0 (#379) v0.10.40 2026-04-18 13:57:57 +02:00
Andreas Wachter 1ba40c996d unify docker.yml (#378) 2026-04-16 18:59:53 +02:00
Sjors Holtrop 49e1a956ce S3 dest: Tag backup objects with original repo's URL (#377)
* beginning of user tags implementation

* make s3 src URL tagging configurable

* fix formatting

* actually fix formatting
2026-04-16 07:11:36 +02:00
Andreas Wachter 036923b810 added email header to ntfy (#376) 2026-04-09 07:30:36 +02:00
Andreas Wachter de4f262e1f add additional tests (#374)
* add additional tests

* fix linter
2026-04-08 16:32:34 +02:00
Andreas Wachter 4bbe669b71 fix findings from 372 (#373) 2026-04-06 11:34:05 +02:00
Andreas Wachter e6999418e2 Fix linting (#372) 2026-04-05 21:39:20 +02:00
Andreas Wachter 8214115952 Merge pull request #369 from cooperspencer/update_sourcehut
do not use the api anymore but switch to graphql
2026-04-05 19:33:34 +02:00
Andreas Wachter ff10d30ed3 Merge pull request #368 from cooperspencer/dependabot/go_modules/github.com/go-git/go-git/v5-5.17.1
Bump github.com/go-git/go-git/v5 from 5.16.5 to 5.17.1
2026-03-31 13:49:33 +02:00
Andreas Wachter 45c03a96f1 do not use the api anymore but switch to graphql 2026-03-31 13:40:49 +02:00
dependabot[bot] 2fb0bc23f0 Bump github.com/go-git/go-git/v5 from 5.16.5 to 5.17.1
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.16.5 to 5.17.1.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.16.5...v5.17.1)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.17.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 17:15:46 +00:00
Andreas Wachter b41088d141 Merge pull request #365 from cooperspencer/codeberg_nil 2026-02-26 20:00:38 +01:00
Andreas Wachter d40418ef2a update linter 2026-02-26 18:51:23 +01:00
Andreas Wachter 7229f2d275 update go in workflows 2026-02-26 18:47:01 +01:00
Andreas Wachter 77d252ee9a Merge branch 'codeberg_nil' of github.com:cooperspencer/gickup into codeberg_nil 2026-02-26 16:56:58 +01:00
Andreas Wachter 226b61ad8d update containers 2026-02-26 16:56:18 +01:00
Andreas Wachter a1b23aa0b4 fix codeberg nil error 2026-02-26 16:54:44 +01:00
Andreas Wachter 5980507ddc Merge pull request #360 from cooperspencer/update_go_container
updated go in containers
2026-02-26 16:53:55 +01:00
Andreas Wachter fe97cd2043 update containers 2026-02-26 16:41:15 +01:00
Andreas Wachter c753720079 fix codeberg nil error 2026-02-26 16:29:57 +01:00
Andreas Wachter 6f020d665f Merge pull request #364 from cooperspencer/dependabot/go_modules/github.com/cloudflare/circl-1.6.3
Bump github.com/cloudflare/circl from 1.6.1 to 1.6.3
2026-02-26 16:23:53 +01:00