This milestone adds comprehensive remote synchronization and stacked-diff publishing capabilities to Onyx. ## New Features ### Rebase Engine (internal/git/rebase.go) - Stacked rebase with sequential commit rebasing - Conflict detection and handling - Integration with rerere for automatic conflict resolution - Support for rebase continuation and abort operations ### Rerere Integration (internal/git/rerere.go) - Conflict resolution recording and replay - Cache location: .onx/rerere_cache - Automatic application of previous conflict resolutions - Normalized conflict pattern matching via SHA1 hashing ### Conflict Resolution UI (internal/git/conflicts.go) - Index-based conflict detection (stage 1/2/3) - Clear conflict presentation with file paths and hashes - User-friendly resolution guidance - Conflict marker extraction and analysis ### Remote Commands #### onx sync (internal/commands/sync.go) - Fetch latest changes from remote - Rebase workstream stack onto updated base branch - Automatic rerere conflict resolution - Transaction-based with full undo support - Progress reporting and clear error messages #### onx push (internal/commands/push.go) - Push all workstream branches to remote - Support for force push operations - Per-branch progress reporting - Clear summary of pushed branches ### Remote Helpers (internal/git/remote.go) - Remote validation and configuration - Support for multiple remotes with origin default - URL retrieval and remote existence checking ## Implementation Details - All operations wrapped in oplog transactions for undo support - Comprehensive error handling and user feedback - Integration with existing workstream management - CLI commands registered in cmd/onx/main.go ## Status Milestone 4 is now complete. All core synchronization and remote interaction features are implemented and tested. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"git.dws.rip/DWS/onyx/internal/commands"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var version = "0.1.0"
|
|
|
|
func main() {
|
|
rootCmd := &cobra.Command{
|
|
Use: "onx",
|
|
Short: "Onyx - The iPhone of Version Control",
|
|
Long: `Onyx is a next-generation version control system that provides
|
|
a superior user experience layer on top of Git. It offers transparent
|
|
versioning, workstreams for stacked-diff management, and an action
|
|
log for universal undo functionality.`,
|
|
Version: version,
|
|
}
|
|
|
|
// Add commands
|
|
rootCmd.AddCommand(commands.NewInitCmd())
|
|
rootCmd.AddCommand(commands.NewUndoCmd())
|
|
rootCmd.AddCommand(commands.NewDaemonCmd())
|
|
rootCmd.AddCommand(commands.NewSaveCmd())
|
|
rootCmd.AddCommand(commands.NewNewCmd())
|
|
rootCmd.AddCommand(commands.NewListCmd())
|
|
rootCmd.AddCommand(commands.NewSwitchCmd())
|
|
rootCmd.AddCommand(commands.NewSyncCmd())
|
|
rootCmd.AddCommand(commands.NewPushCmd())
|
|
|
|
// Execute the root command
|
|
if err := rootCmd.Execute(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|