You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Git-cross is not a replacement for `git-subrepo` or `git-submodule`. -- It provides an alternative approach and simplifies otherwise manual and complex git workflow behind into intuitive commands.
23
+
24
+
Git-cross does not directly link external repositories to your main repository. -- It provides separate worktrees for each upstream patch, and help with sync to local repository.
25
+
26
+
## Implementation status
27
+
28
+
The project is still in early days and Work In Progress. Just/Golang versions are tested by the author on best-effort basis. Most of the commands and structure of "Crossfile" is already freezed.
22
29
23
30
The project provides three implementations, with **Go being the primary native version for production use.**
Copy file name to clipboardExpand all lines: TODO.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,8 +33,10 @@
33
33
34
34
-[x]`cross list` comand shall either print all cross remote repositories (REMOTE (alias), GIT URL) in separate table above the table with patches. Or directly inline with each patch.
35
35
-[x] Implement `cross remove` patch, to remove local_pathch patch and it's worktree. Finally clean up the Metadata an Crossfile. Once physically removed, `git worktree prune` will clenaup git itself.
36
-
-[ ] Implement `cross cut` to remove git remote repo registration from "cross use" command and ask user whether either remove all patches (like: cross remove)
36
+
-[ ] Implement `cross prune [remote name]` to remove git remote repo registration from "cross use" command and ask user whether either remove all git remotes without active cross patches (like after: cross remove), then `git worktree prune` to remove all worktrees. optional argument (an remote repo alias/name would enforce either removal of all it's patches altogther with worktrees and remotes)
37
37
-[x] Re-implement `wt` (worktree) command in Go and Rust with full test coverage (align logic with Justfile).
38
+
-[ ] Refactor `cross cd` to target local patched folder and output path (no subshell), supporting fzf.
39
+
-[ ] Review and propose implementation (tool and test) to be able patch even single file. If not easily possible without major refactoring, then evaluate new command "patch-file".
38
40
-[ ] Improve interactive `fzf` selection in native implementations.
# Implementation Plan - GitHub Releases & Architecture Refinement
2
+
3
+
## Context
4
+
The `git-cross` project currently has three implementations:
5
+
1.**Go:** A native implementation (Primary focus).
6
+
2.**Shell/Justfile:** The original functional version.
7
+
3.**Rust:** A native implementation (WIP).
8
+
9
+
To streamline distribution and maintenance, we are formalizing the preference for the Go implementation while maintaining the others for reference or future development.
10
+
11
+
## Architecture Decision Record (ADR) - Primary Implementation Choice
12
+
**Decision: Prioritize Go as the primary native implementation for `git-cross`.**
13
+
14
+
### Rationale:
15
+
-**Ecosystem:** Go has mature, high-level wrappers for both Git (`git-module`) and Rsync (`grsync`) that align well with our "wrapper" philosophy.
16
+
-**Distribution:** Go's static linking and cross-compilation simplicity make it ideal for a developer tool that needs to run in various environments (Mac, Linux, CI).
17
+
-**Maintenance:** The Go implementation is currently more complete and matches the behavioral requirements of the PoC with less boilerplate than the current Rust approach.
18
+
19
+
### Consequences:
20
+
1.**Rust Implementation:** Will be marked as **Work In Progress (WIP)** and experimental. Future feature development will land in Go first.
21
+
2.**Builds & Releases:** Focus on providing pre-built binaries for Go across platforms (Linux amd64/arm64, Darwin amd64/arm64). Rust binaries will be built but marked as experimental.
22
+
23
+
## Proposed Changes
24
+
25
+
### 1. Documentation & Status Updates
26
+
-**`README.md`**: Update the "Implementation Note" to clearly state Go is the primary version and Rust is WIP.
27
+
-**`src-rust/src/main.rs`**: Add a WIP warning to the CLI help description.
28
+
-**`src-rust/Cargo.toml`**: Update metadata if needed.
29
+
30
+
### 2. GitHub Release Workflow Refinement
31
+
- Update `.github/workflows/release.yml` to:
32
+
- Build Go binaries using `goreleaser` (or a similar action).
33
+
- Build Rust binaries for standard platforms.
34
+
- Attach all binaries to the GitHub Release.
35
+
- Use `softprops/action-gh-release` instead of the deprecated `actions/create-release`.
36
+
37
+
### 3. Implementation Details for Release Workflow
38
+
#### Go Release (via GoReleaser):
39
+
Create a `.goreleaser.yaml` in `src-go/` (or root) to handle:
0 commit comments