Successfully migrated Go tooling and code from finos/morphir to finos/morphir-go with complete git history preservation.
- Used
git-filter-repoto extract Go-specific paths from finos/morphir - Preserved 615 commits of Git history
- Extracted paths:
cmd/morphir/- CLI applicationpkg/- All Go library packages (17 modules)tests/bdd/- Behavioral testing.github/workflows/- CI/CD workflows.goreleaser.yaml- Release configuration
- Replaced all occurrences of
github.com/finos/morphirwithgithub.com/finos/morphir-go - Updated 214 files across the codebase
- Ensured all imports resolve correctly
- Merged extracted code with
--allow-unrelated-histories - Resolved merge conflicts (1 file: tests/bdd/scripts/fetch-fixtures.sh)
- Current HEAD includes latest upstream changes (Go 1.25.6)
- Replaced Justfile with mise + TypeScript tasks
- Created
.mise.tomlwith tool versions - Copied 18 TypeScript-based task files from source
- Tasks use
bunas script runner - File-based tasks in
.config/mise/tasks/
- Created
- Updated CI/CD
- Changed from
setup-justtojdx/mise-action - All workflows now use
mise run <task> - Kept Go setup step for reliability
- Changed from
- Updated
go.workto include all 17 modules - Added
replacedirectives to all go.mod files for local development - Updated bash scripts (mod-tidy.sh, verify.sh) to handle all modules
- Maintained PowerShell scripts for Windows compatibility
The migration brought 9 additional Go modules:
- pkg/bindings/golang - Go code generation from Morphir IR
- pkg/bindings/morphir-elm - Elm interop utilities
- pkg/bindings/typemap - Type mapping between languages
- pkg/bindings/wit - WebAssembly Interface Types support
- pkg/docling-doc - Document processing capabilities
- pkg/logging - Structured logging with zerolog
- pkg/nbformat - Jupyter notebook format support
- pkg/task - Task management system
- pkg/toolchain - Toolchain enablement
- pkg/vfs - Virtual file system
Total modules: 17 (previously 7)
The merged code includes enhanced CLI functionality:
morphir about- Display Morphir informationmorphir decoration- Manage decorationsdecoration query- Query decorationsdecoration setup- Set up decoration typesdecoration type- Manage decoration types
morphir golang- Go code generation operationsmorphir plan- Show execution plan for workflowsmorphir task- Task managementmorphir wit- WebAssembly Interface Types operations
✅ Successfully builds morphir CLI (26MB binary)
go build -o bin/morphir ./cmd/morphir
./bin/morphir --version
# morphir version dev✅ All commands work:
./bin/morphir help
# Shows 12 available commands (previously 7)Available tasks (run with mise run <task> or mise <task>):
build(alias:b) - Build the morphir CLItest(alias:t) - Run all testsverify(alias:v) - Verify all modules buildfmt- Format codefmt-check- Check code formattinglint- Run lintersclean- Clean build artifacts
test:bdd- Run BDD teststest:integration- Run integration teststest:integration-morphir-elm- Test morphir-elm interoptest-external- Run external teststest-junit- Generate JUnit test reports
workspace:setup- Set up Go workspace with all modulesworkspace:sync- Sync workspace dependenciesworkspace:doctor- Check workspace health
release:validate- Validate GoReleaser configurationrelease:snapshot- Build release snapshot (no publish)release:tags- Manage release tagsrelease:clean-replace- Clean and update replace directives
docs:schema:convert- Convert schemasdocs:schema:verify- Verify schema consistencydocs:schema:drift- Check for schema driftdocs:llms-txt- Generate LLMs.txt documentation
fixtures:fetch- Fetch test fixtures
.mise.toml- Mise configuration with tool versions.config/mise/tasks/*.ts- TypeScript-based task files (18 files).config/mise/tasks/*.py- Python-based task files (4 files)- Hundreds of new Go source files from upstream
go.work- Updated with all 17 modulesgo.work.sum- Workspace checksums- All
go.modfiles - Added replace directives for local development .github/workflows/ci.yml- Uses mise instead of just.github/workflows/release.yml- Uses mise instead of justREADME.md- Updated build instructions to use miseAGENTS.md- Updated development guidelines
mise.toml- Replaced with.mise.toml+ file-based tasks
Justfile- Can be removed after CI validates mise tasksscripts/*.shandscripts/*.ps1- Cross-platform scripts
- 3 commits in finos/morphir-go
- Outdated code (last sync unknown)
- 615+ commits with full history
- Latest:
chore(deps): update dependency go to v1.25.6 - Complete development history from finos/morphir
3b2e1ac- Initial plan08735f5- feat: migrate from Justfile to mise.tomlad89a04- refactor: update import paths to github.com/finos/morphir-go1b6811a- Merge remote-tracking branch 'extraction/main'a9d5bc6- feat: merge Go code from finos/morphir with history preservationdc55863- fix: add replace directives to all go.mod files
- CI Validation - Verify mise tasks work in CI environment
- Testing - Run full test suite with new code
- Documentation - Update remaining docs referencing Justfile
- Remove Justfile - After successful CI validation
- Release - Tag and release first version with merged code
# List available mise tasks
mise tasks
# Run build
mise run build
# or: mise build
# Run tests
mise run test
# Verify all modules
mise run verify
# Check workspace health
mise run workspace:doctor
# Format code
mise run fmt
# Run linters
mise run lint
# Full CI check
mise run fmt-check && mise run verify && mise run test && mise run lint| Step | Status | Details |
|---|---|---|
| Extract history | ✅ Complete | 615 commits filtered |
| Update imports | ✅ Complete | 214 files updated |
| Merge code | ✅ Complete | 1 conflict resolved |
| Modernize build | ✅ Complete | mise + TypeScript tasks |
| Add replace directives | ✅ Complete | All go.mod files updated |
| Build verification | ✅ Complete | 26MB binary builds successfully |
| CI validation | ⏳ Pending | Awaiting PR CI run |
| Documentation update | ⏳ Pending | Some docs still reference just |
| Justfile removal | ⏳ Pending | After CI validates mise |
- Git history preserved from finos/morphir
- All imports updated to github.com/finos/morphir-go
- Code builds successfully
- CLI runs and shows enhanced commands
- Justfile replaced with mise tasks
- CI updated to use mise
- All 17 modules included in workspace
- CI pipeline passes
- Full test suite passes
- Documentation updated
- Justfile removed
- Original issue: "Migrate Go Tooling and CI from finos/morphir to finos/morphir-go"
- Source repository: https://github.com/finos/morphir
- Target repository: https://github.com/finos/morphir-go
- Mise documentation: https://mise.jdx.dev
- GoReleaser: https://goreleaser.com