[{"id":"36917156632","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094/events","html_url":"https://github.com/rustic-rs/rustic/issues/1094","id":2173949456,"node_id":"I_kwDOHAC4D86Bk9YQ","number":1094,"title":"error sanitizing source with whitespaces in config file","user":{"login":"AlphaJack","id":19962243,"node_id":"MDQ6VXNlcjE5OTYyMjQz","avatar_url":"https://avatars.githubusercontent.com/u/19962243?v=4","gravatar_id":"","url":"https://api.github.com/users/AlphaJack","html_url":"https://github.com/AlphaJack","followers_url":"https://api.github.com/users/AlphaJack/followers","following_url":"https://api.github.com/users/AlphaJack/following{/other_user}","gists_url":"https://api.github.com/users/AlphaJack/gists{/gist_id}","starred_url":"https://api.github.com/users/AlphaJack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlphaJack/subscriptions","organizations_url":"https://api.github.com/users/AlphaJack/orgs","repos_url":"https://api.github.com/users/AlphaJack/repos","events_url":"https://api.github.com/users/AlphaJack/events{/privacy}","received_events_url":"https://api.github.com/users/AlphaJack/received_events","type":"User","site_admin":false},"labels":[{"id":3927599957,"node_id":"LA_kwDOHAC4D87qGmtV","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":5742213573,"node_id":"LA_kwDOHAC4D88AAAABVkM5xQ","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"},{"id":5742231568,"node_id":"LA_kwDOHAC4D88AAAABVkOAEA","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-core","name":"A-core","color":"FBCA04","default":false,"description":"Area: Generally related to `rustic_core`"},{"id":5823537087,"node_id":"LA_kwDOHAC4D88AAAABWxwfvw","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-ui-ux","name":"A-ui-ux","color":"FBCA04","default":false,"description":"Area: Related to user interfaces and user experience"},{"id":5941073710,"node_id":"LA_kwDOHAC4D88AAAABYh2XLg","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-config","name":"A-config","color":"FBCA04","default":false,"description":"Area: Related to the config file functionality and format"},{"id":6697291764,"node_id":"LA_kwDOHAC4D88AAAABjzCP9A","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-filesystem","name":"A-filesystem","color":"FBCA04","default":false,"description":"Area: Related to the Filesystem in one way or the other"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-03-07T14:07:02Z","updated_at":"2024-03-27T05:37:36Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"#558 \r\n\r\nI have a folder with whitespace that I would like to backup:\r\n\r\n```toml\r\n[[backup.sources]]\r\nsource = \"/home/jack/Mobile Backup\"\r\n```\r\n\r\nCLI output:\r\n```\r\n[00:00:00] reading index... ████████████████████████████████████████ 0/0 \r\n[WARN] error sanitizing source=\"/home/jack/Mobile Backup\" in config file\r\n```\r\n\r\nEscaping with a backslash works only if I use single quotes:\r\n\r\n```toml\r\n[[backup.sources]]\r\nsource = '/home/jack/Mobile\\ Backup'\r\n```\r\nCLI output:\r\n```\r\n[00:00:00] reading index... ████████████████████████████████████████ 0/0 \r\n[00:00:00] getting latest snapshot... ████████████████████████████████████████ 0/0 \r\n[00:00:17] backing up...\r\n```\r\n\r\nBut it doesn't work with double quotes:\r\n\r\n```toml\r\n[[backup.sources]]\r\nsource = \"/home/jack/Mobile\\ Backup\"\r\n```\r\nCLI output:\r\n```\r\nerror: rustic-rs fatal error: parse error: invalid escape character in string: ` ` at line 8 column 46\r\n```\r\n\r\n\r\nIn the [full configuration file example](https://github.com/rustic-rs/rustic/blob/6fffaad1cc1aeebf874063fc62125f4ce3b490b5/config/full.toml#L115C1-L115C93) it is said that `source` can contain multiple path in a string, separated by a whitespace, and I think this is the cause of the issue.\r\n\r\nWhy not having `sources` as an array of `source`, as `password-command` is an alternative to `password`?","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2021984422","html_url":"https://github.com/rustic-rs/rustic/issues/1094#issuecomment-2021984422","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1094","id":2021984422,"node_id":"IC_kwDOHAC4D854hQim","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-27T05:37:35Z","updated_at":"2024-03-27T05:37:35Z","author_association":"MEMBER","body":"@simonsan Yes, the naming is a bit irritating, right. But in principle it is about how many backup runs are specified (which will all generate different snapshots) and for each of the runs one can specify multiple (local) sources.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2021984422/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-27T05:37:36Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36917106674","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101/events","html_url":"https://github.com/rustic-rs/rustic/issues/1101","id":2181643169,"node_id":"I_kwDOHAC4D86CCTuh","number":1101,"title":"`restore`: dealing with long paths in an OS-\"agnostic\" way","user":{"login":"ss256100","id":139848055,"node_id":"U_kgDOCFXpdw","avatar_url":"https://avatars.githubusercontent.com/u/139848055?v=4","gravatar_id":"","url":"https://api.github.com/users/ss256100","html_url":"https://github.com/ss256100","followers_url":"https://api.github.com/users/ss256100/followers","following_url":"https://api.github.com/users/ss256100/following{/other_user}","gists_url":"https://api.github.com/users/ss256100/gists{/gist_id}","starred_url":"https://api.github.com/users/ss256100/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ss256100/subscriptions","organizations_url":"https://api.github.com/users/ss256100/orgs","repos_url":"https://api.github.com/users/ss256100/repos","events_url":"https://api.github.com/users/ss256100/events{/privacy}","received_events_url":"https://api.github.com/users/ss256100/received_events","type":"User","site_admin":false},"labels":[{"id":3927599972,"node_id":"LA_kwDOHAC4D87qGmtk","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-question","name":"C-question","color":"D3D3D3","default":false,"description":"Category: Further information is requested"},{"id":5742146651,"node_id":"LA_kwDOHAC4D88AAAABVkI0Ww","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-commands","name":"A-commands","color":"FBCA04","default":false,"description":"Area: Related to commands in `rustic`"},{"id":5823537087,"node_id":"LA_kwDOHAC4D88AAAABWxwfvw","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-ui-ux","name":"A-ui-ux","color":"FBCA04","default":false,"description":"Area: Related to user interfaces and user experience"},{"id":6697291764,"node_id":"LA_kwDOHAC4D88AAAABjzCP9A","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-filesystem","name":"A-filesystem","color":"FBCA04","default":false,"description":"Area: Related to the Filesystem in one way or the other"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-03-12T13:35:42Z","updated_at":"2024-03-27T05:34:45Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hello [username] Im poor sysadmin from Australia and I just patiently asking about adding some simple feature in such great tool as rustic is. Pls anyone: if u have time: make kinda fixer-function in rustic which will handle nonecomaptable-paths on *nix and Windows. Nowadays rustic and restic in 90% cases cant restore data on Windows if it was taken Linux ","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2021981562","html_url":"https://github.com/rustic-rs/rustic/issues/1101#issuecomment-2021981562","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1101","id":2021981562,"node_id":"IC_kwDOHAC4D854hP16","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-27T05:34:44Z","updated_at":"2024-03-27T05:34:44Z","author_association":"MEMBER","body":"@ss256100 Can you please provide any more information? If it is just about too long paths, I'm going to close this issue as it is out of rustic's hands...","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2021981562/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-27T05:34:45Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36906117806","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"repository_id":693194728,"push_id":17717008775,"size":2,"distinct_size":1,"ref":"refs/heads/local-be-create-dir","head":"7a3f5d83f34d8bafe73a9f272ee01aa630344bf5","before":"023f181a958fd289f4a1bb1a723a5f4831d291db","commits":[{"sha":"0d8015497f7a71112e6e920014026449f2563a28","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"chore: fix clippy lints","distinct":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core/commits/0d8015497f7a71112e6e920014026449f2563a28"},{"sha":"7a3f5d83f34d8bafe73a9f272ee01aa630344bf5","author":{"email":"37850842+aawsome@users.noreply.github.com","name":"aawsome"},"message":"Merge branch 'main' into local-be-create-dir","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic_core/commits/7a3f5d83f34d8bafe73a9f272ee01aa630344bf5"}]},"public":true,"created_at":"2024-03-26T19:42:08Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36847251135","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"repository_id":693194728,"push_id":17689673059,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"0d8015497f7a71112e6e920014026449f2563a28","before":"fb291dc9ea085a8622207a6ed74747d2497e6854","commits":[{"sha":"0d8015497f7a71112e6e920014026449f2563a28","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"chore: fix clippy lints","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic_core/commits/0d8015497f7a71112e6e920014026449f2563a28"}]},"public":true,"created_at":"2024-03-25T09:18:45Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36824458897","type":"PullRequestEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"opened","number":206,"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206","id":1787937938,"node_id":"PR_kwDOKVFP6M5qkcSS","html_url":"https://github.com/rustic-rs/rustic_core/pull/206","diff_url":"https://github.com/rustic-rs/rustic_core/pull/206.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/206.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/206","number":206,"state":"open","locked":false,"title":"fix(backends): local: Only create repo dir when creating the repository","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"The local backend always created the repo dir - even for read-only repository access. This is fixed. Now the repo dir is only created when a repository is created.\r\n\r\ncloses https://github.com/rustic-rs/rustic/issues/1107","created_at":"2024-03-23T20:50:17Z","updated_at":"2024-03-23T20:50:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/206/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/023f181a958fd289f4a1bb1a723a5f4831d291db","head":{"label":"rustic-rs:local-be-create-dir","ref":"local-be-create-dir","sha":"023f181a958fd289f4a1bb1a723a5f4831d291db","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-23T20:50:18Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":916,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":6,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":35,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":6,"open_issues":35,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-23T20:50:18Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":916,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":6,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":35,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":6,"open_issues":35,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/206"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/206"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/206/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/206/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/023f181a958fd289f4a1bb1a723a5f4831d291db"}},"author_association":"MEMBER","auto_merge":null,"active_lock_reason":null,"merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}},"public":true,"created_at":"2024-03-23T20:50:19Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36824446977","type":"CreateEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"ref":"local-be-create-dir","ref_type":"branch","master_branch":"main","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","pusher_type":"user"},"public":true,"created_at":"2024-03-23T20:48:37Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36824434269","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107/events","html_url":"https://github.com/rustic-rs/rustic/issues/1107","id":2189147875,"node_id":"I_kwDOHAC4D86Ce77j","number":1107,"title":"rustic with local backend always creates repository folder if it doesn't exist","user":{"login":"AlphaJack","id":19962243,"node_id":"MDQ6VXNlcjE5OTYyMjQz","avatar_url":"https://avatars.githubusercontent.com/u/19962243?v=4","gravatar_id":"","url":"https://api.github.com/users/AlphaJack","html_url":"https://github.com/AlphaJack","followers_url":"https://api.github.com/users/AlphaJack/followers","following_url":"https://api.github.com/users/AlphaJack/following{/other_user}","gists_url":"https://api.github.com/users/AlphaJack/gists{/gist_id}","starred_url":"https://api.github.com/users/AlphaJack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlphaJack/subscriptions","organizations_url":"https://api.github.com/users/AlphaJack/orgs","repos_url":"https://api.github.com/users/AlphaJack/repos","events_url":"https://api.github.com/users/AlphaJack/events{/privacy}","received_events_url":"https://api.github.com/users/AlphaJack/received_events","type":"User","site_admin":false},"labels":[{"id":3927599943,"node_id":"LA_kwDOHAC4D87qGmtH","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-bug","name":"C-bug","color":"D3D3D3","default":false,"description":"Category: Something isn't working as expected"},{"id":5823537087,"node_id":"LA_kwDOHAC4D88AAAABWxwfvw","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-ui-ux","name":"A-ui-ux","color":"FBCA04","default":false,"description":"Area: Related to user interfaces and user experience"},{"id":6697291764,"node_id":"LA_kwDOHAC4D88AAAABjzCP9A","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-filesystem","name":"A-filesystem","color":"FBCA04","default":false,"description":"Area: Related to the Filesystem in one way or the other"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-15T17:30:27Z","updated_at":"2024-03-23T20:46:45Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"I think this is an unwanted behavior of `repoinfo`, as it prompts for a password, print this error and create an empty folder:\r\n\r\n```\r\n$ rustic --repo ~/Desktop/non-existent repoinfo --json\r\nenter repository password: [hidden]\r\nerror: No repository config file found. Is there a repo at local:/home/jack/Desktop/non-existent?\r\n```\r\n\r\nI think the correct order should be:\r\n\r\n1. check if folder exists, error if not (do not create an empty folder)\r\n2. check if repo config file exists, error if not\r\n3. prompt for password\r\n\r\nThe option `--only-files` does not error, but still creates an empty foler","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016598950","html_url":"https://github.com/rustic-rs/rustic/issues/1107#issuecomment-2016598950","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1107","id":2016598950,"node_id":"IC_kwDOHAC4D854Mtum","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-23T20:46:45Z","updated_at":"2024-03-23T20:46:45Z","author_association":"MEMBER","body":"@AlphaJack Thanks a lot for reporting! Actually only the local backend is affected - there all commands (also read-only ones) currently do create the repo dir, if it doesn't exist.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016598950/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-23T20:46:46Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36823919814","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108/events","html_url":"https://github.com/rustic-rs/rustic/issues/1108","id":2189375097,"node_id":"I_kwDOHAC4D86CfzZ5","number":1108,"title":"`restore`: folder permission are always 755, folder owner is the `restore` user","user":{"login":"AlphaJack","id":19962243,"node_id":"MDQ6VXNlcjE5OTYyMjQz","avatar_url":"https://avatars.githubusercontent.com/u/19962243?v=4","gravatar_id":"","url":"https://api.github.com/users/AlphaJack","html_url":"https://github.com/AlphaJack","followers_url":"https://api.github.com/users/AlphaJack/followers","following_url":"https://api.github.com/users/AlphaJack/following{/other_user}","gists_url":"https://api.github.com/users/AlphaJack/gists{/gist_id}","starred_url":"https://api.github.com/users/AlphaJack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlphaJack/subscriptions","organizations_url":"https://api.github.com/users/AlphaJack/orgs","repos_url":"https://api.github.com/users/AlphaJack/repos","events_url":"https://api.github.com/users/AlphaJack/events{/privacy}","received_events_url":"https://api.github.com/users/AlphaJack/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-15T19:53:54Z","updated_at":"2024-03-23T19:38:59Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Assume a source with one file, created by an unprivileged user. By running\r\n\r\n```bash\r\nmkdir ~/Desktop/Source\r\ntruncate --size 1M ~/Desktop/Source/file\r\nrustic -P Profile init\r\nrustic -P Profile backup\r\nrustic -P Profile extract latest ~/Desktop/Restore\r\nls -la ~/Desktop/Restore\r\n```\r\n\r\nI noticed the following:\r\n\r\n- \"~/Desktop/Restore/home/jack\" has permission 0755, while the real \"/home/jack\" has 0700\r\n\r\nIf I launch `init`, `backup` and `restore` as root (on the same source created by the unprivileged user):\r\n\r\n- same as before\r\n- only \"~/Desktop/Restore/home/jack/Source\" is owned by root (not \"~/Desktop/Restore/home\" or \"~/Desktop/Restore/home/jack\"), while the real \"Source\" and is owned by the unprivileged user\r\n\r\nIf I run `init` and `backup` as unprivileged user, but `restore` as root:\r\n\r\n- everything except \"file\" is owned by root\r\n\r\nIf I run `init` and `backup` as root, but `restore` as unprivileged user, everything is fine (except the first 0755 issue)\r\n\r\nIf I delete \"/home/jack/Desktop/Source\" and restore the snapshot to \"/\" to have the original source back:\r\n\r\n- the permission of \"/home/jack\" changes from 0700 to 0755\r\n- the operation takes too much because every file not in the snapshot is logged:\r\n\r\n```\r\n19:33:16 [DEBUG] (1) rustic_core::commands::restore: additional \"/home/jack/.local/share/Trash/file\"\r\n```\r\n\r\nFor the last issue, are we supposed to restore to a temporary directory, and then move the extracted files to their original location?","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016584568","html_url":"https://github.com/rustic-rs/rustic/issues/1108#issuecomment-2016584568","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1108","id":2016584568,"node_id":"IC_kwDOHAC4D854MqN4","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-23T19:38:59Z","updated_at":"2024-03-23T19:38:59Z","author_association":"MEMBER","body":"@AlphaJack Thanks for opening this issue!\r\n\r\nAbout permissions and owners of dirs: Can you tell which backup sources you did use? (e.g. post that part of your config file). Note that rustic only saves the correct permissions and ownership for files within that path. For example, if you backup `/home/user` the trees `home` and `user` won't be saved within the snapshot with correct permissions. You can run `rustic ls --long` to see which permissions/ownership are saved within a snapshot.\r\n\r\nIn general, if you like to restore it is mostly advisable to select a suitable subtree of your snapshot which you like to restore. In the example above, using `rustic restore latest:/home/user /home/user` does prevent rustic from scanning dirs except subdirs of `/home/user`. Also, this could be a remedy for your permission issues...\r\n","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016584568/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-23T19:39:00Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36823835456","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084/events","html_url":"https://github.com/rustic-rs/rustic/issues/1084","id":2164833910,"node_id":"I_kwDOHAC4D86BCL52","number":1084,"title":"`repair index` has no effect","user":{"login":"Schweber","id":64630479,"node_id":"MDQ6VXNlcjY0NjMwNDc5","avatar_url":"https://avatars.githubusercontent.com/u/64630479?v=4","gravatar_id":"","url":"https://api.github.com/users/Schweber","html_url":"https://github.com/Schweber","followers_url":"https://api.github.com/users/Schweber/followers","following_url":"https://api.github.com/users/Schweber/following{/other_user}","gists_url":"https://api.github.com/users/Schweber/gists{/gist_id}","starred_url":"https://api.github.com/users/Schweber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Schweber/subscriptions","organizations_url":"https://api.github.com/users/Schweber/orgs","repos_url":"https://api.github.com/users/Schweber/repos","events_url":"https://api.github.com/users/Schweber/events{/privacy}","received_events_url":"https://api.github.com/users/Schweber/received_events","type":"User","site_admin":false},"labels":[{"id":5861640226,"node_id":"LA_kwDOHAC4D88AAAABXWGIIg","url":"https://api.github.com/repos/rustic-rs/rustic/labels/S-triage","name":"S-triage","color":"D93F0B","default":false,"description":"Status: Waiting for a maintainer to triage this issue/PR"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-03-02T14:28:21Z","updated_at":"2024-03-23T19:28:07Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Checking my repository yields the following:\r\n```\r\n ~ rustic -P slim -P MEGA check \r\n[INFO] using config /home/sperber/.config/rustic/slim.toml\r\n[INFO] using config /home/sperber/.config/rustic/MEGA.toml\r\n[INFO] repository rclone:MEGA:Rustic: password is correct.\r\n[INFO] using cache at /home/sperber/.cache/rustic/378cce4ff1059d99310953312ff66e49029e0ce98472c6d4190fa10f33458952\r\n[00:00:00] checking Snapshot in cache... ████████████████████████████████████████ 27.38 KiB/27.38 KiB 25.23 MiB/s (ETA 0s)\r\n[00:00:00] checking Index in cache... ████████████████████████████████████████ 17.67 MiB/17.67 MiB 3.68 GiB/s (ETA 0s)\r\n[00:00:00] reading index... ████████████████████████████████████████ 128/128[00:00:00] listing packs... \r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 0712bf9f not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 333ebde7 not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack 47661552 not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack aa509bfd not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[WARN] pack facc363c not referenced in index. Can be a parallel backup job. To repair: 'rustic repair index'.\r\n[00:00:00] listing packs...\r\n[00:00:00] cleaning up packs from cache...\r\n[00:00:43] checking packs in cache... ████████████████████████████████████████ 163.97 MiB/163.97 MiB 3.79 MiB/s (ETA 0s)\r\n[00:00:00] reading snapshots... ████████████████████████████████████████ 48/48\r\n[00:00:00] checking trees... █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2/48\r\n[ERROR] file \"home/sperber/.config/ironbar/config.toml\" blob d16484e9 is missing in index\r\n[ERROR] file \"home/sperber/.config/ironbar/config.toml\" blob d16484e9 is missing in index\r\n[ERROR] file \"home/sperber/.librewolf/94ufbqpk.default/addonStartup.json.lz4\" blob 14256e46 is missing in index\r\n[ERROR] file \"home/sperber/.config/fish/fish_variables\" blob 77db7704 is missing in index\r\n[00:00:00] checking trees... ████████████████████████████████████████ 48/48\r\n```\r\n\r\nI then run\r\n```\r\n ~ rustic -P slim -P MEGA repair index 1m57s 15:19\r\n[INFO] using config /home/sperber/.config/rustic/slim.toml\r\n[INFO] using config /home/sperber/.config/rustic/MEGA.toml\r\n[INFO] repository rclone:MEGA:Rustic: password is correct.\r\n[INFO] using cache at /home/sperber/.cache/rustic/378cce4ff1059d99310953312ff66e49029e0ce98472c6d4190fa10f33458952\r\n[00:00:00] listing packs...\r\n[00:00:00] reading index... ████████████████████████████████████████ 128/128\r\n[00:00:00] reading pack headers ████████████████████████████████████████ 0/0\r\n```\r\n\r\nIf i then run the check again, exactly the same output is shown. I rebooted my system and went through the steps again, the result is the same.\r\n\r\nI once started the `forget` command and then cancelled it after a short while, so i think that is where the errors are from. However, i don't know why `repair` doesn't work.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016582421","html_url":"https://github.com/rustic-rs/rustic/issues/1084#issuecomment-2016582421","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1084","id":2016582421,"node_id":"IC_kwDOHAC4D854MpsV","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-23T19:28:07Z","updated_at":"2024-03-23T19:28:07Z","author_association":"MEMBER","body":"@Schweber Thanks a lot for reporting the issue! And very sorry for the late reply.\r\n\r\nActually, what you are reporting is a mystery for me. The `check` run lists all pack files, reads the index files and recognizes that there are pack files missing in the index. The `repair index` run lists all pack files, reads the index files and collects pack files missing in the index. Those are then read - or better the headers of those pack files. And the number of pack files headers to read is 0....\r\n\r\n#1078 won't fix this as it does exactly the same as `repair index` does. It actually shares this logic with `repair index`.\r\n\r\nCan you try to re-run your example with the latest nightly builds? I would like to see if you can still reproduce it there. If you still get the same behavior we have to get more debug information of what's going wrong...","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2016582421/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-23T19:28:08Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36808304143","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/events","html_url":"https://github.com/rustic-rs/rustic/issues/1055","id":2123137539,"node_id":"I_kwDOHAC4D85-jIID","number":1055,"title":"`find`: design and implement a command for finding files in snapshots","user":{"login":"n8henrie","id":1234956,"node_id":"MDQ6VXNlcjEyMzQ5NTY=","avatar_url":"https://avatars.githubusercontent.com/u/1234956?v=4","gravatar_id":"","url":"https://api.github.com/users/n8henrie","html_url":"https://github.com/n8henrie","followers_url":"https://api.github.com/users/n8henrie/followers","following_url":"https://api.github.com/users/n8henrie/following{/other_user}","gists_url":"https://api.github.com/users/n8henrie/gists{/gist_id}","starred_url":"https://api.github.com/users/n8henrie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/n8henrie/subscriptions","organizations_url":"https://api.github.com/users/n8henrie/orgs","repos_url":"https://api.github.com/users/n8henrie/repos","events_url":"https://api.github.com/users/n8henrie/events{/privacy}","received_events_url":"https://api.github.com/users/n8henrie/received_events","type":"User","site_admin":false},"labels":[{"id":3927599957,"node_id":"LA_kwDOHAC4D87qGmtV","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":4530582771,"node_id":"LA_kwDOHAC4D88AAAABDgs08w","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-cli","name":"A-cli","color":"FBCA04","default":false,"description":"Area: `rustic` command line interface"},{"id":5742146651,"node_id":"LA_kwDOHAC4D88AAAABVkI0Ww","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-commands","name":"A-commands","color":"FBCA04","default":false,"description":"Area: Related to commands in `rustic`"},{"id":5823537087,"node_id":"LA_kwDOHAC4D88AAAABWxwfvw","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-ui-ux","name":"A-ui-ux","color":"FBCA04","default":false,"description":"Area: Related to user interfaces and user experience"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-02-07T14:16:40Z","updated_at":"2024-03-22T19:08:00Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"According to https://rustic.cli.rs/docs/comparison-restic.html I see the `find` and `mount` commands are missing.\r\n\r\nI see an existing issue for [`mount`](https://github.com/rustic-rs/rustic/issues/971).\r\n\r\nIs there any ongoing work or major blockers for the `find` command? I haven't used `mount`, but I've used [restic's `find` command](https://restic.readthedocs.io/en/stable/075_scripting.html#find) frequently.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2015742172","html_url":"https://github.com/rustic-rs/rustic/issues/1055#issuecomment-2015742172","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055","id":2015742172,"node_id":"IC_kwDOHAC4D854Jcjc","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-22T19:07:59Z","updated_at":"2024-03-22T19:07:59Z","author_association":"MEMBER","body":"Just some comments why I think the first one is a different use case:\r\n\r\nWhen we are searching for a given full path, we know that this can only be zero or exactly one match per repository. This allows things like showing not only all \"matching\" snapshots, but also a more detailed history of this full path (like when did metadata change or when did the content change). Also we can heavily optimize here: if there is no `home` tree in a snapshot you can directly skip it without needing to traverse all trees.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2015742172/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-22T19:08:00Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36807930612","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/events","html_url":"https://github.com/rustic-rs/rustic/issues/1055","id":2123137539,"node_id":"I_kwDOHAC4D85-jIID","number":1055,"title":"`find`: design and implement a command for finding files in snapshots","user":{"login":"n8henrie","id":1234956,"node_id":"MDQ6VXNlcjEyMzQ5NTY=","avatar_url":"https://avatars.githubusercontent.com/u/1234956?v=4","gravatar_id":"","url":"https://api.github.com/users/n8henrie","html_url":"https://github.com/n8henrie","followers_url":"https://api.github.com/users/n8henrie/followers","following_url":"https://api.github.com/users/n8henrie/following{/other_user}","gists_url":"https://api.github.com/users/n8henrie/gists{/gist_id}","starred_url":"https://api.github.com/users/n8henrie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/n8henrie/subscriptions","organizations_url":"https://api.github.com/users/n8henrie/orgs","repos_url":"https://api.github.com/users/n8henrie/repos","events_url":"https://api.github.com/users/n8henrie/events{/privacy}","received_events_url":"https://api.github.com/users/n8henrie/received_events","type":"User","site_admin":false},"labels":[{"id":3927599957,"node_id":"LA_kwDOHAC4D87qGmtV","url":"https://api.github.com/repos/rustic-rs/rustic/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":4530582771,"node_id":"LA_kwDOHAC4D88AAAABDgs08w","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-cli","name":"A-cli","color":"FBCA04","default":false,"description":"Area: `rustic` command line interface"},{"id":5742146651,"node_id":"LA_kwDOHAC4D88AAAABVkI0Ww","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-commands","name":"A-commands","color":"FBCA04","default":false,"description":"Area: Related to commands in `rustic`"},{"id":5823537087,"node_id":"LA_kwDOHAC4D88AAAABWxwfvw","url":"https://api.github.com/repos/rustic-rs/rustic/labels/A-ui-ux","name":"A-ui-ux","color":"FBCA04","default":false,"description":"Area: Related to user interfaces and user experience"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-02-07T14:16:40Z","updated_at":"2024-03-22T18:52:27Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"According to https://rustic.cli.rs/docs/comparison-restic.html I see the `find` and `mount` commands are missing.\r\n\r\nI see an existing issue for [`mount`](https://github.com/rustic-rs/rustic/issues/971).\r\n\r\nIs there any ongoing work or major blockers for the `find` command? I haven't used `mount`, but I've used [restic's `find` command](https://restic.readthedocs.io/en/stable/075_scripting.html#find) frequently.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2015717296","html_url":"https://github.com/rustic-rs/rustic/issues/1055#issuecomment-2015717296","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1055","id":2015717296,"node_id":"IC_kwDOHAC4D854JWew","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-22T18:52:26Z","updated_at":"2024-03-22T18:52:26Z","author_association":"MEMBER","body":"@n8henrie Great that you are about to start - and no worry, we all work in our free time so delays from time to time are pretty common...\r\n\r\nDo you have a Discord account? If we want to chat something more detailed, it might be a possibility to open a channel there.\r\n\r\nNow, about your use-case: I think we actually have two use-cases:\r\n- find a file in the snapshots where the full path is known, e.g. `/home/n8henrie/git/restic-backup/restic-cmd.sh`\r\n- find all files in the snapshots which match some criteria like filename `restic-cmd.sh`. This could be extended in future by using wildcards / regular expressions etc. but could be also about metadata like \"files greater than 50MiB\" or \"owned by user xyz\". And maybe possibility to combine matching conditions....\r\n\r\nI would suggest to you to start implementing one of those using just a simple traversal.\r\n\r\n If you look at https://github.com/rustic-rs/rustic/blob/main/src/commands/snapshots.rs you see can how you can get the (already grouped) snapshots list and how to iterate over it (using a simple \"for\" loop is sufficient actually). \r\n\r\nNow, if you already have a snapshot, take a look at https://github.com/rustic-rs/rustic/blob/main/src/commands/ls.rs which uses `Repository.ls` to traverse a given tree - this can of course also be the whole snapshot. It returns path and all metadata, so you can use that to decide if an entry matches or not and then print it.\r\n\r\nHope this helps for a start, but please don't hesitate to ask if you need any more details about one point!","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2015717296/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-22T18:52:27Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780308458","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"repository_id":469809167,"push_id":17654127882,"size":3,"distinct_size":1,"ref":"refs/heads/check-index","head":"b68a29f24c7bea2b2e11d17dbd150342bad04d9c","before":"b7a2792e66039d91ccdd2a031bd308ec55c8b63b","commits":[{"sha":"6fffaad1cc1aeebf874063fc62125f4ce3b490b5","author":{"email":"49699333+dependabot[bot]@users.noreply.github.com","name":"dependabot[bot]"},"message":"build(deps): bump mio from 0.8.10 to 0.8.11 (#1089)\n\nBumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.\n\nChangelog\n
\n\n \n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mio&package-manager=cargo&previous-version=0.8.10&new-version=0.8.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\nDependabot commands and options\n \n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/rustic-rs/rustic/network/alerts).\n\n\n\nSigned-off-by: dependabot[bot] \nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","distinct":false,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/6fffaad1cc1aeebf874063fc62125f4ce3b490b5"},{"sha":"07f92d882e537748bd5f042d65a6b45e4ff0ae11","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"chore: Update deps and adapt to rustic_core changes","distinct":false,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/07f92d882e537748bd5f042d65a6b45e4ff0ae11"},{"sha":"b68a29f24c7bea2b2e11d17dbd150342bad04d9c","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"feat(commands): Add --check-index option","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/b68a29f24c7bea2b2e11d17dbd150342bad04d9c"}]},"public":true,"created_at":"2024-03-22T00:01:00Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780207382","type":"DeleteEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"ref":"dirs-logfile","ref_type":"branch","pusher_type":"user"},"public":true,"created_at":"2024-03-21T23:54:31Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780206384","type":"PullRequestEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"closed","number":1106,"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106","id":1773915363,"node_id":"PR_kwDOHAC4D85pu8zj","html_url":"https://github.com/rustic-rs/rustic/pull/1106","diff_url":"https://github.com/rustic-rs/rustic/pull/1106.diff","patch_url":"https://github.com/rustic-rs/rustic/pull/1106.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106","number":1106,"state":"closed","locked":false,"title":"fix: Create dirs for log-file","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"rustic now creates needed dirs for the logfile\r\n\r\ncloses #1105 ","created_at":"2024-03-15T11:15:57Z","updated_at":"2024-03-21T23:54:26Z","closed_at":"2024-03-21T23:54:26Z","merged_at":null,"merge_commit_sha":"8339389bfdd7189b7349884623f6fe004b264db8","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/aa55e8c8c31c90cad144c591b479b40405828f59","head":{"label":"rustic-rs:dirs-logfile","ref":"dirs-logfile","sha":"aa55e8c8c31c90cad144c591b479b40405828f59","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":469809167,"node_id":"R_kgDOHAC4Dw","name":"rustic","full_name":"rustic-rs/rustic","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic","description":"rustic - fast, encrypted, and deduplicated backups powered by Rust","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic","forks_url":"https://api.github.com/repos/rustic-rs/rustic/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic/deployments","created_at":"2022-03-14T16:10:32Z","updated_at":"2024-03-21T21:13:27Z","pushed_at":"2024-03-21T23:53:24Z","git_url":"git://github.com/rustic-rs/rustic.git","ssh_url":"git@github.com:rustic-rs/rustic.git","clone_url":"https://github.com/rustic-rs/rustic.git","svn_url":"https://github.com/rustic-rs/rustic","homepage":"https://rustic.cli.rs","size":6273,"stargazers_count":1438,"watchers_count":1438,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":true,"forks_count":52,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":68,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backup","deduplication","encryption","restic","rust"],"visibility":"public","forks":52,"open_issues":68,"watchers":1438,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"6fffaad1cc1aeebf874063fc62125f4ce3b490b5","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":469809167,"node_id":"R_kgDOHAC4Dw","name":"rustic","full_name":"rustic-rs/rustic","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic","description":"rustic - fast, encrypted, and deduplicated backups powered by Rust","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic","forks_url":"https://api.github.com/repos/rustic-rs/rustic/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic/deployments","created_at":"2022-03-14T16:10:32Z","updated_at":"2024-03-21T21:13:27Z","pushed_at":"2024-03-21T23:53:24Z","git_url":"git://github.com/rustic-rs/rustic.git","ssh_url":"git@github.com:rustic-rs/rustic.git","clone_url":"https://github.com/rustic-rs/rustic.git","svn_url":"https://github.com/rustic-rs/rustic","homepage":"https://rustic.cli.rs","size":6273,"stargazers_count":1438,"watchers_count":1438,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":true,"forks_count":52,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":68,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backup","deduplication","encryption","restic","rust"],"visibility":"public","forks":52,"open_issues":68,"watchers":1438,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106"},"html":{"href":"https://github.com/rustic-rs/rustic/pull/1106"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic/issues/1106"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic/statuses/aa55e8c8c31c90cad144c591b479b40405828f59"}},"author_association":"MEMBER","auto_merge":null,"active_lock_reason":null,"merged":false,"mergeable":true,"rebaseable":false,"mergeable_state":"clean","merged_by":null,"comments":1,"review_comments":1,"maintainer_can_modify":false,"commits":1,"additions":23,"deletions":17,"changed_files":1}},"public":true,"created_at":"2024-03-21T23:54:27Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780205674","type":"IssueCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106","repository_url":"https://api.github.com/repos/rustic-rs/rustic","labels_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/labels{/name}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/comments","events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/events","html_url":"https://github.com/rustic-rs/rustic/pull/1106","id":2188278560,"node_id":"PR_kwDOHAC4D85pu8zj","number":1106,"title":"fix: Create dirs for log-file","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-15T11:15:57Z","updated_at":"2024-03-21T23:54:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1106","html_url":"https://github.com/rustic-rs/rustic/pull/1106","diff_url":"https://github.com/rustic-rs/rustic/pull/1106.diff","patch_url":"https://github.com/rustic-rs/rustic/pull/1106.patch","merged_at":null},"body":"rustic now creates needed dirs for the logfile\r\n\r\ncloses #1105 ","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2014063966","html_url":"https://github.com/rustic-rs/rustic/pull/1106#issuecomment-2014063966","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1106","id":2014063966,"node_id":"IC_kwDOHAC4D854DC1e","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T23:54:22Z","updated_at":"2024-03-21T23:54:22Z","author_association":"MEMBER","body":"Closing this as #1111 is the better solution.","reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments/2014063966/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T23:54:23Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780192150","type":"PullRequestEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"action":"opened","number":1111,"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111","id":1785611466,"node_id":"PR_kwDOHAC4D85qbkTK","html_url":"https://github.com/rustic-rs/rustic/pull/1111","diff_url":"https://github.com/rustic-rs/rustic/pull/1111.diff","patch_url":"https://github.com/rustic-rs/rustic/pull/1111.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1111","number":1111,"state":"open","locked":false,"title":"fix: show log filename if open/creation failed","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"If opening or creating the logfile fails, rustic now shows the filename to allow users debug the error.","created_at":"2024-03-21T23:53:23Z","updated_at":"2024-03-21T23:53:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/issues/1111/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/22f9d382de7b429ef4b9b0f2672408ac788de399","head":{"label":"rustic-rs:logfile-error","ref":"logfile-error","sha":"22f9d382de7b429ef4b9b0f2672408ac788de399","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":469809167,"node_id":"R_kgDOHAC4Dw","name":"rustic","full_name":"rustic-rs/rustic","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic","description":"rustic - fast, encrypted, and deduplicated backups powered by Rust","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic","forks_url":"https://api.github.com/repos/rustic-rs/rustic/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic/deployments","created_at":"2022-03-14T16:10:32Z","updated_at":"2024-03-21T21:13:27Z","pushed_at":"2024-03-21T23:53:24Z","git_url":"git://github.com/rustic-rs/rustic.git","ssh_url":"git@github.com:rustic-rs/rustic.git","clone_url":"https://github.com/rustic-rs/rustic.git","svn_url":"https://github.com/rustic-rs/rustic","homepage":"https://rustic.cli.rs","size":6273,"stargazers_count":1438,"watchers_count":1438,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":true,"forks_count":52,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":69,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backup","deduplication","encryption","restic","rust"],"visibility":"public","forks":52,"open_issues":69,"watchers":1438,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"07f92d882e537748bd5f042d65a6b45e4ff0ae11","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":469809167,"node_id":"R_kgDOHAC4Dw","name":"rustic","full_name":"rustic-rs/rustic","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic","description":"rustic - fast, encrypted, and deduplicated backups powered by Rust","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic","forks_url":"https://api.github.com/repos/rustic-rs/rustic/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic/deployments","created_at":"2022-03-14T16:10:32Z","updated_at":"2024-03-21T21:13:27Z","pushed_at":"2024-03-21T23:53:24Z","git_url":"git://github.com/rustic-rs/rustic.git","ssh_url":"git@github.com:rustic-rs/rustic.git","clone_url":"https://github.com/rustic-rs/rustic.git","svn_url":"https://github.com/rustic-rs/rustic","homepage":"https://rustic.cli.rs","size":6273,"stargazers_count":1438,"watchers_count":1438,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":true,"forks_count":52,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":69,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backup","deduplication","encryption","restic","rust"],"visibility":"public","forks":52,"open_issues":69,"watchers":1438,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111"},"html":{"href":"https://github.com/rustic-rs/rustic/pull/1111"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic/issues/1111"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic/issues/1111/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic/pulls/1111/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic/statuses/22f9d382de7b429ef4b9b0f2672408ac788de399"}},"author_association":"MEMBER","auto_merge":null,"active_lock_reason":null,"merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":10,"deletions":1,"changed_files":1}},"public":true,"created_at":"2024-03-21T23:53:24Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780174804","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"repository_id":469809167,"push_id":17654065310,"size":1,"distinct_size":1,"ref":"refs/heads/logfile-error","head":"22f9d382de7b429ef4b9b0f2672408ac788de399","before":"10f265b1df51a567dfa8193840fffd56bb7e811e","commits":[{"sha":"22f9d382de7b429ef4b9b0f2672408ac788de399","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"fix: show log filename if open/creation failed","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/22f9d382de7b429ef4b9b0f2672408ac788de399"}]},"public":true,"created_at":"2024-03-21T23:52:11Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36780154149","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"repository_id":469809167,"push_id":17654054811,"size":3,"distinct_size":2,"ref":"refs/heads/logfile-error","head":"10f265b1df51a567dfa8193840fffd56bb7e811e","before":"23c1183f4f5f02e11142f46abe7a7aa15ad3b27f","commits":[{"sha":"07f92d882e537748bd5f042d65a6b45e4ff0ae11","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"chore: Update deps and adapt to rustic_core changes","distinct":false,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/07f92d882e537748bd5f042d65a6b45e4ff0ae11"},{"sha":"3751b74f316e6c2abfe51a4cbb7d196f6f357927","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"WIP","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/3751b74f316e6c2abfe51a4cbb7d196f6f357927"},{"sha":"10f265b1df51a567dfa8193840fffd56bb7e811e","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"fix: show log filename if open/creation failed","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/10f265b1df51a567dfa8193840fffd56bb7e811e"}]},"public":true,"created_at":"2024-03-21T23:50:43Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36779978502","type":"PushEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"repository_id":469809167,"push_id":17653968325,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"07f92d882e537748bd5f042d65a6b45e4ff0ae11","before":"6fffaad1cc1aeebf874063fc62125f4ce3b490b5","commits":[{"sha":"07f92d882e537748bd5f042d65a6b45e4ff0ae11","author":{"email":"alex@weissfam.de","name":"Alexander Weiss"},"message":"chore: Update deps and adapt to rustic_core changes","distinct":true,"url":"https://api.github.com/repos/rustic-rs/rustic/commits/07f92d882e537748bd5f042d65a6b45e4ff0ae11"}]},"public":true,"created_at":"2024-03-21T23:38:11Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36779549107","type":"CreateEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":469809167,"name":"rustic-rs/rustic","url":"https://api.github.com/repos/rustic-rs/rustic"},"payload":{"ref":"logfile-error","ref_type":"branch","master_branch":"main","description":"rustic - fast, encrypted, and deduplicated backups powered by Rust","pusher_type":"user"},"public":true,"created_at":"2024-03-21T23:15:20Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368921","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526915796","pull_request_review_id":1939295039,"id":1526915796,"node_id":"PRRC_kwDOKVFP6M5bAuLU","diff_hunk":"@@ -200,18 +206,37 @@ impl<'a, BE: DecryptFullBackend, I: ReadGlobalIndex> Archiver<'a, BE, I> {\n }\n })\n .try_for_each(|item| self.tree_archiver.add(item))\n- })\n- .unwrap()?;\n- src_size_handle.join().unwrap();\n- Ok(())\n+ });\n+\n+ if let Err(err) = scoped_work {\n+ error!(\"error archiving: {err:?}\");\n+ Err(MultiprocessingErrorKind::ArchivingError {\n+ location: format!(\"archiver::archive, {}\", line!()),\n+ }\n+ .into())\n+ } else if let Ok(Err(err)) = scoped_work {\n+ Err(err)\n+ } else if let Err(err) = src_size_handle.join() {","path":"crates/core/src/archiver.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"I would not use `else if` but put this in a separate `if` block. This is about joining the `computing sizes...`-thread started at the very beginning.","created_at":"2024-03-15T22:27:37Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526915796","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526915796"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526915796"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526915796/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":219,"original_line":219,"side":"RIGHT","original_position":104,"position":104,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:27:37Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368901","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904129","pull_request_review_id":1939295039,"id":1526904129,"node_id":"PRRC_kwDOKVFP6M5bArVB","diff_hunk":"@@ -213,29 +226,32 @@ impl RcloneBackend {\n debug!(\"using REST backend with url {}.\", url.as_ref());\n let rest = RestBackend::new(rest_url, options)?;\n \n- let handle = Some(std::thread::spawn(move || loop {\n+ let handle = std::thread::spawn(move || loop {\n let mut line = String::new();\n- if stderr.read_line(&mut line).unwrap() == 0 {\n- break;\n- }\n+ if let Ok(line_length) = stderr.read_line(&mut line) {\n+ if line_length == 0 {\n+ break;\n+ }\n+ };\n+\n if !line.is_empty() {\n info!(\"rclone output: {line}\");\n }\n- }));\n+ });\n \n Ok(Self {\n child,\n url: String::from(url.as_ref()),\n rest,\n- handle,\n+ handle: Some(handle),\n })\n }\n }\n \n impl ReadBackend for RcloneBackend {\n /// Returns the location of the backend.\n- fn location(&self) -> String {\n- \"rclone:\".to_string() + &self.url\n+ fn location(&self) -> Result {","path":"crates/backend/src/rclone.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"Actually I don't know if `location` should be able to return an error. Have to think a bit deeper about it...","created_at":"2024-03-15T22:12:11Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526904129","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904129"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526904129"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904129/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":253,"original_line":253,"side":"RIGHT","original_position":111,"position":111,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:12:11Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368926","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904981","pull_request_review_id":1939295039,"id":1526904981,"node_id":"PRRC_kwDOKVFP6M5bAriV","diff_hunk":"@@ -23,11 +23,17 @@ mod consts {\n \n // trait CheckError to add user-defined method check_error on Response\n pub(crate) trait CheckError {\n- /// Check reqwest Response for error and treat errors as permanent or transient\n- fn check_error(self) -> Result>;\n+ type Error;\n+\n+ /// Check a response for an error and treat them as permanent or transient\n+ fn check_error(self) -> Result\n+ where\n+ Self: Sized;\n }\n \n impl CheckError for Response {\n+ type Error = backoff::Error;\n+","path":"crates/backend/src/rest.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"What does this improve?","created_at":"2024-03-15T22:13:12Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526904981","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904981"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526904981"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526904981/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":26,"original_start_line":26,"start_side":"RIGHT","line":36,"original_line":36,"side":"RIGHT","original_position":25,"position":25,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:13:12Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368911","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527100006","pull_request_review_id":1939295039,"id":1527100006,"node_id":"PRRC_kwDOKVFP6M5bBbJm","diff_hunk":"@@ -231,22 +238,30 @@ impl Cache {\n dir.push(\"rustic\");\n dir\n });\n+\n fs::create_dir_all(&path).map_err(CacheBackendErrorKind::FromIoError)?;\n+\n cachedir::ensure_tag(&path).map_err(CacheBackendErrorKind::FromIoError)?;\n- path.push(id.to_hex());\n+\n+ path.push(id.to_hex()?.to_str()?);","path":"crates/core/src/backend/cache.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"see above, no `to_str` needed here.","created_at":"2024-03-16T05:35:25Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1527100006","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527100006"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1527100006"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527100006/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":null,"original_line":246,"side":"RIGHT","original_position":51,"position":null,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-16T05:35:25Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368903","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526900315","pull_request_review_id":1939295039,"id":1526900315,"node_id":"PRRC_kwDOKVFP6M5bAqZb","diff_hunk":"@@ -42,9 +42,21 @@ impl Drop for RcloneBackend {\n /// Kill the child process.\n fn drop(&mut self) {\n debug!(\"killing rclone.\");\n- self.child.kill().unwrap();\n- // TODO: Handle error and log it\n- _ = self.handle.take().map(JoinHandle::join);\n+\n+ if let Err(err) = self.child.kill() {\n+ warn!(\"failed to kill rclone: {err}\");\n+ };\n+\n+ match self.handle.take().map(JoinHandle::join) {\n+ Some(res) => {\n+ if let Err(err) = res {\n+ warn!(\"failed to join rclone output thread: {err:?}\");","path":"crates/backend/src/rclone.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"if we have an error, the thread panicked, so maybe `warn!(\"rclone panicked: {err:?}\")`","created_at":"2024-03-15T22:07:30Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526900315","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526900315"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526900315"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526900315/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":53,"original_line":53,"side":"RIGHT","original_position":24,"position":24,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:07:30Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368909","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526897824","pull_request_review_id":1939295039,"id":1526897824,"node_id":"PRRC_kwDOKVFP6M5bApyg","diff_hunk":"@@ -42,9 +42,21 @@ impl Drop for RcloneBackend {\n /// Kill the child process.\n fn drop(&mut self) {\n debug!(\"killing rclone.\");\n- self.child.kill().unwrap();\n- // TODO: Handle error and log it\n- _ = self.handle.take().map(JoinHandle::join);\n+\n+ if let Err(err) = self.child.kill() {\n+ warn!(\"failed to kill rclone: {err}\");\n+ };\n+\n+ match self.handle.take().map(JoinHandle::join) {\n+ Some(res) => {\n+ if let Err(err) = res {","path":"crates/backend/src/rclone.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"`Some(Err(err)) =>` is better, IMO","created_at":"2024-03-15T22:04:34Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526897824","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526897824"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526897824"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526897824/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":51,"original_start_line":51,"start_side":"RIGHT","line":52,"original_line":52,"side":"RIGHT","original_position":23,"position":23,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:04:34Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368890","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526901353","pull_request_review_id":1939295039,"id":1526901353,"node_id":"PRRC_kwDOKVFP6M5bAqpp","diff_hunk":"@@ -42,9 +42,21 @@ impl Drop for RcloneBackend {\n /// Kill the child process.\n fn drop(&mut self) {\n debug!(\"killing rclone.\");\n- self.child.kill().unwrap();\n- // TODO: Handle error and log it\n- _ = self.handle.take().map(JoinHandle::join);\n+\n+ if let Err(err) = self.child.kill() {\n+ warn!(\"failed to kill rclone: {err}\");\n+ };\n+\n+ match self.handle.take().map(JoinHandle::join) {\n+ Some(res) => {\n+ if let Err(err) = res {\n+ warn!(\"failed to join rclone output thread: {err:?}\");\n+ }\n+ }\n+ None => {\n+ warn!(\"rclone output thread already joined.\");\n+ }","path":"crates/backend/src/rclone.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"I think we don't need to handle the `None` case. In that case we didn't even spawn a rclone thread, so nothing to report here.","created_at":"2024-03-15T22:08:27Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526901353","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526901353"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526901353"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526901353/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":56,"original_start_line":56,"start_side":"RIGHT","line":58,"original_line":58,"side":"RIGHT","original_position":29,"position":29,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:08:27Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368910","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527104003","pull_request_review_id":1939295039,"id":1527104003,"node_id":"PRRC_kwDOKVFP6M5bBcID","diff_hunk":"@@ -296,3 +332,57 @@ impl Parent {\n Ok(result)\n }\n }\n+","path":"crates/core/src/archiver/parent.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"internal remark: Review until here.","created_at":"2024-03-16T05:59:20Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1527104003","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527104003"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1527104003"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1527104003/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":335,"original_line":335,"side":"RIGHT","original_position":91,"position":91,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-16T05:59:20Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368870","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526895227","pull_request_review_id":1939295039,"id":1526895227,"node_id":"PRRC_kwDOKVFP6M5bApJ7","diff_hunk":"@@ -144,10 +165,19 @@ impl ReadBackend for LocalBackend {\n /// Returns the location of the backend.\n ///\n /// This is `local:`.\n- fn location(&self) -> String {\n+ fn location(&self) -> Result {\n let mut location = \"local:\".to_string();\n- location.push_str(&self.path.to_string_lossy());\n- location\n+\n+ let path = self\n+ .path\n+ .to_str()\n+ .ok_or(LocalBackendErrorKind::PathToStringFailed {\n+ path: self.path.clone(),\n+ })?;","path":"crates/backend/src/local.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"the `to_string_lossy` perfectly does its job - given that the location is usually only used for information. With this error handling non-unicode paths won't work anymore (if we ever want to use them). And currently `LocalBackend` is constructed using a `AsRef`, so there won't be any non-unicode anyway....","created_at":"2024-03-15T22:01:49Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526895227","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526895227"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526895227"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526895227/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":167,"original_start_line":170,"start_side":"RIGHT","line":173,"original_line":176,"side":"RIGHT","original_position":92,"position":77,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T22:01:49Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}},{"id":"36605368868","type":"PullRequestReviewCommentEvent","actor":{"id":37850842,"login":"aawsome","display_login":"aawsome","gravatar_id":"","url":"https://api.github.com/users/aawsome","avatar_url":"https://avatars.githubusercontent.com/u/37850842?"},"repo":{"id":693194728,"name":"rustic-rs/rustic_core","url":"https://api.github.com/repos/rustic-rs/rustic_core"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526493845","pull_request_review_id":1939295039,"id":1526493845,"node_id":"PRRC_kwDOKVFP6M5a_HKV","diff_hunk":"@@ -213,12 +212,17 @@ mod tests {\n #[case(\"rest\", SupportedBackend::Rest)]\n #[cfg(feature = \"opendal\")]\n #[case(\"opendal\", SupportedBackend::OpenDAL)]\n- fn test_try_from_is_ok(#[case] input: &str, #[case] expected: SupportedBackend) {\n- assert_eq!(SupportedBackend::try_from(input).unwrap(), expected);\n+ fn test_try_from_passes(\n+ #[case] input: &str,\n+ #[case] expected: SupportedBackend,\n+ ) -> Result<(), Box> {","path":"crates/backend/src/choose.rs","commit_id":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","original_commit_id":"682456fb1b2dc86258d1eb00d16610df22feeb7a","user":{"login":"aawsome","id":37850842,"node_id":"MDQ6VXNlcjM3ODUwODQy","avatar_url":"https://avatars.githubusercontent.com/u/37850842?v=4","gravatar_id":"","url":"https://api.github.com/users/aawsome","html_url":"https://github.com/aawsome","followers_url":"https://api.github.com/users/aawsome/followers","following_url":"https://api.github.com/users/aawsome/following{/other_user}","gists_url":"https://api.github.com/users/aawsome/gists{/gist_id}","starred_url":"https://api.github.com/users/aawsome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aawsome/subscriptions","organizations_url":"https://api.github.com/users/aawsome/orgs","repos_url":"https://api.github.com/users/aawsome/repos","events_url":"https://api.github.com/users/aawsome/events{/privacy}","received_events_url":"https://api.github.com/users/aawsome/received_events","type":"User","site_admin":false},"body":"I would simply use `anyhow::Result`.","created_at":"2024-03-15T15:53:08Z","updated_at":"2024-03-16T05:59:40Z","html_url":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526493845","pull_request_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526493845"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202#discussion_r1526493845"},"pull_request":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"}},"reactions":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments/1526493845/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":218,"original_line":218,"side":"RIGHT","original_position":22,"position":22,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202","id":1769752024,"node_id":"PR_kwDOKVFP6M5pfEXY","html_url":"https://github.com/rustic-rs/rustic_core/pull/202","diff_url":"https://github.com/rustic-rs/rustic_core/pull/202.diff","patch_url":"https://github.com/rustic-rs/rustic_core/pull/202.patch","issue_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202","number":202,"state":"open","locked":false,"title":"feat(error)!: handle errors more gracefully in rustic_core.","user":{"login":"simonsan","id":14062932,"node_id":"MDQ6VXNlcjE0MDYyOTMy","avatar_url":"https://avatars.githubusercontent.com/u/14062932?v=4","gravatar_id":"","url":"https://api.github.com/users/simonsan","html_url":"https://github.com/simonsan","followers_url":"https://api.github.com/users/simonsan/followers","following_url":"https://api.github.com/users/simonsan/following{/other_user}","gists_url":"https://api.github.com/users/simonsan/gists{/gist_id}","starred_url":"https://api.github.com/users/simonsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonsan/subscriptions","organizations_url":"https://api.github.com/users/simonsan/orgs","repos_url":"https://api.github.com/users/simonsan/repos","events_url":"https://api.github.com/users/simonsan/events{/privacy}","received_events_url":"https://api.github.com/users/simonsan/received_events","type":"User","site_admin":false},"body":"Till now, rustic_core had a lot of unwraps and expects sprinkled over the code base. This made rustic_core and dependents panic in case of errors. This is unacceptable for a library, hence we fixed it now.\r\n\r\nFixes #140\r\n\r\nTODO:\r\n- [X] Implement unit tests for test coverage of some changes\r\n- [x] Fix integration test\r\n- [x] `0` (*nix) errors left (due to unwrap/expect being denied)\r\n\r\nPossible Panics left over/reintroduced:\r\n- `HexId::as_str()` / `Id:to_hex()`: [Commit cc6430f4](https://github.com/rustic-rs/rustic_core/pull/202/commits/cc6430f4bf0334ed2bd4137ccded24dbf6aec3d9)","created_at":"2024-03-13T10:21:32Z","updated_at":"2024-03-16T05:59:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fe82553b390aea12e32f913955dca19065a3e695","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":5977352678,"node_id":"LA_kwDOKVFP6M8AAAABZEcp5g","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/A-errors","name":"A-errors","color":"FBCA04","default":false,"description":"Area: error handling needs improvement"},{"id":5977352724,"node_id":"LA_kwDOKVFP6M8AAAABZEcqFA","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-enhancement","name":"C-enhancement","color":"D3D3D3","default":false,"description":"Category: New feature or request"},{"id":6669429694,"node_id":"LA_kwDOKVFP6M8AAAABjYdrvg","url":"https://api.github.com/repos/rustic-rs/rustic_core/labels/C-refactor","name":"C-refactor","color":"D3D3D3","default":false,"description":"Category: Refactoring of already existing code"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits","review_comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments","review_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","head":{"label":"rustic-rs:feat/remove-unwrap-expect","ref":"feat/remove-unwrap-expect","sha":"2044f0b355e2ac62d92aa2fb3bc19c368a87ac44","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"base":{"label":"rustic-rs:main","ref":"main","sha":"fb291dc9ea085a8622207a6ed74747d2497e6854","user":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":693194728,"node_id":"R_kgDOKVFP6A","name":"rustic_core","full_name":"rustic-rs/rustic_core","private":false,"owner":{"login":"rustic-rs","id":100384149,"node_id":"O_kgDOBfu9lQ","avatar_url":"https://avatars.githubusercontent.com/u/100384149?v=4","gravatar_id":"","url":"https://api.github.com/users/rustic-rs","html_url":"https://github.com/rustic-rs","followers_url":"https://api.github.com/users/rustic-rs/followers","following_url":"https://api.github.com/users/rustic-rs/following{/other_user}","gists_url":"https://api.github.com/users/rustic-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/rustic-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rustic-rs/subscriptions","organizations_url":"https://api.github.com/users/rustic-rs/orgs","repos_url":"https://api.github.com/users/rustic-rs/repos","events_url":"https://api.github.com/users/rustic-rs/events{/privacy}","received_events_url":"https://api.github.com/users/rustic-rs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rustic-rs/rustic_core","description":"rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs","fork":false,"url":"https://api.github.com/repos/rustic-rs/rustic_core","forks_url":"https://api.github.com/repos/rustic-rs/rustic_core/forks","keys_url":"https://api.github.com/repos/rustic-rs/rustic_core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rustic-rs/rustic_core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rustic-rs/rustic_core/teams","hooks_url":"https://api.github.com/repos/rustic-rs/rustic_core/hooks","issue_events_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/events{/number}","events_url":"https://api.github.com/repos/rustic-rs/rustic_core/events","assignees_url":"https://api.github.com/repos/rustic-rs/rustic_core/assignees{/user}","branches_url":"https://api.github.com/repos/rustic-rs/rustic_core/branches{/branch}","tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/tags","blobs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/{sha}","languages_url":"https://api.github.com/repos/rustic-rs/rustic_core/languages","stargazers_url":"https://api.github.com/repos/rustic-rs/rustic_core/stargazers","contributors_url":"https://api.github.com/repos/rustic-rs/rustic_core/contributors","subscribers_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscribers","subscription_url":"https://api.github.com/repos/rustic-rs/rustic_core/subscription","commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rustic-rs/rustic_core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rustic-rs/rustic_core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues/comments{/number}","contents_url":"https://api.github.com/repos/rustic-rs/rustic_core/contents/{+path}","compare_url":"https://api.github.com/repos/rustic-rs/rustic_core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rustic-rs/rustic_core/merges","archive_url":"https://api.github.com/repos/rustic-rs/rustic_core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rustic-rs/rustic_core/downloads","issues_url":"https://api.github.com/repos/rustic-rs/rustic_core/issues{/number}","pulls_url":"https://api.github.com/repos/rustic-rs/rustic_core/pulls{/number}","milestones_url":"https://api.github.com/repos/rustic-rs/rustic_core/milestones{/number}","notifications_url":"https://api.github.com/repos/rustic-rs/rustic_core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rustic-rs/rustic_core/labels{/name}","releases_url":"https://api.github.com/repos/rustic-rs/rustic_core/releases{/id}","deployments_url":"https://api.github.com/repos/rustic-rs/rustic_core/deployments","created_at":"2023-09-18T14:34:57Z","updated_at":"2024-02-25T10:26:12Z","pushed_at":"2024-03-15T23:20:41Z","git_url":"git://github.com/rustic-rs/rustic_core.git","ssh_url":"git@github.com:rustic-rs/rustic_core.git","clone_url":"https://github.com/rustic-rs/rustic_core.git","svn_url":"https://github.com/rustic-rs/rustic_core","homepage":"https://rustic.cli.rs/ecosystem/rustic-core/","size":1142,"stargazers_count":25,"watchers_count":25,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":5,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":34,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["backups","deduplicated","encrypted","library","restic","rust","rustic"],"visibility":"public","forks":5,"open_issues":34,"watchers":25,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202"},"html":{"href":"https://github.com/rustic-rs/rustic_core/pull/202"},"issue":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202"},"comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/rustic-rs/rustic_core/statuses/2044f0b355e2ac62d92aa2fb3bc19c368a87ac44"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null}},"public":true,"created_at":"2024-03-15T15:53:08Z","org":{"id":100384149,"login":"rustic-rs","gravatar_id":"","url":"https://api.github.com/orgs/rustic-rs","avatar_url":"https://avatars.githubusercontent.com/u/100384149?"}}]