Skip to content

fw-headless is missing chorusmerge?! #2244

@myieye

Description

@myieye

According to AI and (I think) the sync error at the bottom, FwHeadless is missing chorusmerge. I can hardly believe that's true, but I can't find any evidence that chorusmerge exists in fw-headless, so... 🤷

(AI generated 👇)
LfMerge does three things that fw-headless does not:

  1. References SIL.Chorus.ChorusMerge as a NuGet package (line 43 of LfMerge.Core.csproj) — this gets the ChorusMerge.dll into the output
  2. Copies a chorusmerge shell script (the Linux wrapper at lib/chorusmerge) into the output directory — this is what Mercurial actually invokes
  3. Copies ChorusMerge.runtimeconfig.json from the NuGet package into the output — needed for dotnet ChorusMerge.dll to work

The shell script is the key glue: Mercurial calls /app/chorusmerge (the shell script), which then does exec dotnet "$LIB"/ChorusMerge.dll "$@", which runs the actual merge logic.

FwHeadless is missing all three pieces. It needs:

  1. A PackageReference to SIL.Chorus.ChorusMerge
  2. A chorusmerge shell script adapted for its container layout (simpler than LfMerge's — just exec dotnet /app/ChorusMerge.dll "$@")
  3. The ChorusMerge.runtimeconfig.json copied to output

Sync job failed: Send/Receive before CRDT sync failed. Output: Sync failure: Chorus.sync.Synchronizer+SynchronizationException: Unable to complete the send/receive.
---> System.ApplicationException: couldn't find merge tool chorusmerge (for pattern General/LanguageProject.langproj)
warning: conflicts while merging General/LanguageProject.langproj! (edit, then use 'hg resolve --mark')

at Chorus.VcsDrivers.Mercurial.HgRepository.Merge(String localRepositoryPath, String revisionNumber)
at Chorus.sync.Synchronizer.MergeTwoChangeSets(Revision head, Revision theirHead)
at Chorus.sync.Synchronizer.MergeHeads()
--- End of inner exception stack trace ---
at Chorus.sync.Synchronizer.ExplainAndThrow(Exception exception, WhatToDo whatToDo, String explanation, Object[] args)
at Chorus.sync.Synchronizer.MergeHeads()
at Chorus.sync.Synchronizer.MergeHeadsOrRollbackAndThrow(HgRepository repo, Revision workingRevBeforeSync)
at Chorus.sync.Synchronizer.SyncNow(SyncOptions options)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions