Closed Bug 1034725 Opened 10 years ago Closed 4 years ago

Git notes are not merged when multiple source repos push to the same target repo in vcs sync

Categories

(Release Engineering :: General, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: pmoore, Unassigned)

Details

(Whiteboard: [kanban:engops:https://mozilla.kanbanize.com/ctrl_board/6/2481] )

The problem occurs e.g. in b2g l10n conversion, when multiple source repos push to the same target repo.

The problem is that the notes ref currently replaces the previous notes ref, so which ever is the last repo to push to that target repo "wins".

Two possible solutions are merging each time: not as trivial as it might at first sound, since the git notes merging does not work (I tested this) because history is not shared between different notes histories in separate source repos - however, it can be done directly with a git merge of the notes tree (see e.g. http://vmiklos.hu/blog/git-notes-merge).

However, my preferred solution will be to kill two birds with one stone, where the other bird is a performance gain we can get, by preparing the target repo locally, and then the final push can be with +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/* +refs/notes/commits:refs/notes/commits - i.e. we have a prepared git repo on local filesystem where everything is pushed to, and to push to the target repo, we just have a single push command that runs.

The advantage of doing it this way is that we can run the generation of the notes on the local target repo in one fell swoop, and require no notes merging or additional fetching from the target repo we push to between pushes from different source repos.

We already have a local target repo (with test_push set to True) in the case of l10n, and can make sure we have this for other sync projects with the same issue. Therefore no extra considerable burden should be placed - instead of iterating through all target remote_repos, and performing the same pushes - the idea would be to do that for the local target repo, and then for the full list of remote repos, to push heads/*, tags/*, notes/commits in one go.

Please note we will have to do some checking that the target_repos have the same tag and branch regexes etc. Another alternative is to modify the config setting, so we can associate a remote target repo to a local target repo in the config, and then the remote target repo will inherit the other properties from the local one (e.g. branch and tag mappings, and force setting, etc).
Assignee: nobody → pmoore
Please note this is *not* a blocker for Bug 799719 - "(vcs-sync) tracker to retire legacy vcs2vcs" since git notes are a new "nice to have" feature that no other system is currently relying on.
Whiteboard: [kanban:engops:https://mozilla.kanbanize.com/ctrl_board/6/2481]
Assignee: pmoore → nobody
Component: Tools → General

Found in triaging. I think this bug outlived its usefulness. Closing this, feel free to re-open if this occurs again.

Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.