Mercurial > hg
view contrib/editmergeps.ps1 @ 38336:bb7e3c6ef592
phabricator: preserve the phase when amending in the Differential fields
I have no idea if it's better to change scmutil.cleanupnodes() so that it has
the option to either apply a specific phase (e.g. for various --secret switches)
or carry over the phase of the old node. The benefit would be that the caller
doesn't have to remember to do this. The con is maybe inefficiency? I wrote
this up as issue5918. I'm leaving that open since Yuya flagged it as an API
bug.
Since most other callers already do this, it's the simplest fix. (It's not
obvious that `split`, `fix` and `rebase` are doing this, but there is test
coverage for `fix` and `rebase`, and experimenting with `split` shows it does
the right thing.)
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 14 Jun 2018 12:35:04 -0400 |
parents | 92bcaef3420b |
children |
line wrap: on
line source
# A simple script for opening merge conflicts in editor # A loose translation of contrib/editmerge to powershell # Please make sure that both editmergeps.bat and editmerge.ps1 are available # via %PATH% and use the following Mercurial settings to enable it # # [ui] # editmergeps # editmergeps.args=$output # editmergeps.check=changed # editmergeps.premerge=keep $file=$args[0] function Get-Lines { Select-String "^<<<<<<" $file | % {"$($_.LineNumber)"} } $ed = $Env:HGEDITOR; if ($ed -eq $nil) { $ed = $Env:VISUAL; } if ($ed -eq $nil) { $ed = $Env:EDITOR; } if ($ed -eq $nil) { $ed = $(hg showconfig ui.editor); } if ($ed -eq $nil) { Write-Error "merge failed - unable to find editor" exit 1 } if (($ed -eq "vim") -or ($ed -eq "emacs") -or ` ($ed -eq "nano") -or ($ed -eq "notepad++")) { $lines = Get-Lines $firstline = if ($lines.Length -gt 0) { $lines[0] } else { $nil } $previousline = $nil; # open the editor to the first conflict until there are no more # or the user stops editing the file while (($firstline -ne $nil) -and ($firstline -ne $previousline)) { if ($ed -eq "notepad++") { $linearg = "-n$firstline" } else { $linearg = "+$firstline" } Start-Process -Wait -NoNewWindow $ed $linearg,$file $previousline = $firstline $lines = Get-Lines $firstline = if ($lines.Length -gt 0) { $lines[0] } else { $nil } } } else { & "$ed" $file } $conflicts=Get-Lines if ($conflicts.Length -ne 0) { Write-Output "merge failed - resolve the conflicts (line $conflicts) then use 'hg resolve --mark'" exit 1 } exit 0