73 lines
2.4 KiB
Markdown
73 lines
2.4 KiB
Markdown
# ForgeFlow 0.3.2 release notes
|
|
|
|
## Automatic clone destinations
|
|
|
|
The normal **Clone from Gitea** action no longer opens a Windows folder picker
|
|
for every repository. ForgeFlow now:
|
|
|
|
1. uses the first configured project root as the default;
|
|
2. derives a safe folder name from the repository clone URL;
|
|
3. creates `<project-root>/<repository-name>`;
|
|
4. clones into that folder;
|
|
5. validates the resulting Git repository;
|
|
6. saves the repository mapping;
|
|
7. starts monitoring the working tree;
|
|
8. opens the linked repository in ForgeFlow.
|
|
|
|
Example:
|
|
|
|
```text
|
|
Default project root: C:\Users\your-name\Projects
|
|
Gitea repository: Jens/Portfolio
|
|
Automatic target: C:\Users\your-name\Projects\Portfolio
|
|
```
|
|
|
|
A separate **Choose another location** action remains available for exceptional
|
|
cases. That choice selects a parent project root; ForgeFlow still creates the
|
|
repository-named subfolder itself.
|
|
|
|
## Existing-folder safety
|
|
|
|
The clone backend now inspects the automatic target before running Git:
|
|
|
|
- a missing target is created through `git clone`;
|
|
- an existing empty directory is accepted;
|
|
- an existing Git checkout with the same normalized origin is linked;
|
|
- a different Git repository is blocked;
|
|
- an ordinary non-empty directory is blocked;
|
|
- a file at the target path is blocked.
|
|
|
|
ForgeFlow never silently overwrites a conflicting folder and does not create a
|
|
duplicated `Repository\Repository` directory.
|
|
|
|
## Security and consistency
|
|
|
|
The renderer no longer supplies a free-form remote URL or clone destination to
|
|
the privileged Git operation. It sends the Gitea repository identity and a
|
|
location mode. The main process then:
|
|
|
|
- resolves the current repository again from Gitea;
|
|
- selects the configured root or a native-dialog result;
|
|
- calculates the destination itself;
|
|
- performs conflict checks;
|
|
- clones or reuses the checkout;
|
|
- persists the mapping atomically.
|
|
|
|
Clone diagnostics contain repository identity, target, branch and commit state,
|
|
but no Gitea token or authorization header.
|
|
|
|
## Validation
|
|
|
|
Version 0.3.2 contains 45 passing automated tests. New coverage includes:
|
|
|
|
- HTTPS and SSH repository folder-name derivation;
|
|
- automatic target construction;
|
|
- missing and empty target handling;
|
|
- same-origin checkout reuse;
|
|
- different-repository rejection;
|
|
- non-empty ordinary-folder rejection;
|
|
- file-at-target rejection.
|
|
|
|
Existing Git, deployment, diagnostics, redaction, rollback and Windows doctor
|
|
tests continue to pass.
|