Update
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# 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\Jens\Projects
|
||||
Gitea repository: Jens/Portfolio
|
||||
Automatic target: C:\Users\Jens\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.
|
||||
Reference in New Issue
Block a user