# HG changeset patch # User Mads Kiilerich # Date 1417396289 -3600 # Node ID a34a99181f360383dee86acc2286548ec0cf7b22 # Parent c90d9ab6777ab8a0fdf5cdcc4918237d7d6aef2b largefiles: don't show largefile/normal prompts if one side is unchanged diff -r c90d9ab6777a -r a34a99181f36 hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py Mon Dec 01 02:11:17 2014 +0100 +++ b/hgext/largefiles/overrides.py Mon Dec 01 02:11:29 2014 +0100 @@ -438,10 +438,18 @@ msg = _('remote turned local normal file %s into a largefile\n' 'use (l)argefile or keep (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile - if repo.ui.promptchoice(msg, 0) == 0: + if (# local has unchanged normal file, pick remote largefile + pas and lfile in pas[0] and + not pas[0][lfile].cmp(p1[lfile]) or + # if remote has unchanged largefile, pick local normal file + not (pas and standin in pas[0] and + not pas[0][standin].cmp(p2[standin])) and + # else, prompt + repo.ui.promptchoice(msg, 0) == 0 + ): # pick remote largefile actions['r'].append((lfile, None, msg)) newglist.append((standin, (p2.flags(standin),), msg)) - else: + else: # keep local normal file actions['r'].append((standin, None, msg)) elif lfutil.standin(f) in p1 and lfutil.standin(f) not in removes: # Case 2: largefile in the working copy, normal file in @@ -451,7 +459,15 @@ msg = _('remote turned local largefile %s into a normal file\n' 'keep (l)argefile or use (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile - if repo.ui.promptchoice(msg, 0) == 0: + if (# if remote has unchanged normal file, pick local largefile + pas and f in pas[0] and + not pas[0][f].cmp(p2[f]) or + # if local has unchanged largefile, pick remote normal file + not (pas and standin in pas[0] and + not pas[0][standin].cmp(p1[standin])) and + # else, prompt + repo.ui.promptchoice(msg, 0) == 0 + ): # keep local largefile if branchmerge: # largefile can be restored from standin safely actions['r'].append((lfile, None, msg)) @@ -462,7 +478,7 @@ # linear-merge should treat this largefile as 're-added' actions['a'].append((standin, None, msg)) - else: + else: # pick remote normal file actions['r'].append((standin, None, msg)) newglist.append((lfile, (p2.flags(lfile),), msg)) else: diff -r c90d9ab6777a -r a34a99181f36 tests/test-issue3084.t --- a/tests/test-issue3084.t Mon Dec 01 02:11:17 2014 +0100 +++ b/tests/test-issue3084.t Mon Dec 01 02:11:29 2014 +0100 @@ -264,8 +264,6 @@ $ hg merge -r large local changed f which remote deleted use (c)hanged version or (d)elete? c - remote turned local normal file f into a largefile - use (l)argefile or keep (n)ormal file? l getting changed largefiles 1 largefiles updated, 0 removed 1 files updated, 0 files merged, 1 files removed, 0 files unresolved @@ -279,8 +277,6 @@ $ hg merge -r normal-same remote changed f which local deleted use (c)hanged version or leave (d)eleted? c - remote turned local largefile f into a normal file - keep (l)argefile or use (n)ormal file? l getting changed largefiles 1 largefiles updated, 0 removed 1 files updated, 0 files merged, 1 files removed, 0 files unresolved @@ -393,14 +389,12 @@ $ hg merge -r normal local changed .hglf/f which remote deleted use (c)hanged version or (d)elete? c - remote turned local largefile f into a normal file - keep (l)argefile or use (n)ormal file? l getting changed largefiles - 1 largefiles updated, 0 removed - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + 0 largefiles updated, 0 removed + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) $ cat f - large + normal swap @@ -408,14 +402,12 @@ $ hg merge -r large-same remote changed .hglf/f which local deleted use (c)hanged version or leave (d)eleted? c - remote turned local normal file f into a largefile - use (l)argefile or keep (n)ormal file? l getting changed largefiles - 1 largefiles updated, 0 removed - 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + 0 largefiles updated, 0 removed + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) $ cat f - large + normal Ancestor: large Parent: large2 Parent: normal result: ? (annoying extra prompt ... but it do not do any serious harm)