Changeset cfd62a21bd59…
Parent 10e6ab531de6…
by Benjamin Pollack <benjamin@fogcreek.com>
Changes to 51 files · Browse files at cfd62a21bd59 Showing diff from parent 10e6ab531de6 Diff from another changeset...
@@ -3,11 +3,13 @@ import os
import tempfile
import binascii
-import bfutil
+import re
from mercurial import util, node, error, url as url_, hg
from mercurial.i18n import _
+import bfutil
+
class StoreError(Exception):
'''Raised when there is a problem getting files from or putting
files to a central store.'''
@@ -54,7 +56,7 @@
at = 0
for filename, hash in files:
- ui.progress(_('Getting kbfiles'), at, unit='kbfile', total=len(files))
+ ui.progress(_('getting kbfiles'), at, unit='kbfile', total=len(files))
at += 1
ui.note(_('getting %s\n') % filename)
outfilename = self.repo.wjoin(filename)
@@ -90,7 +92,7 @@ bfutil.copy_to_cache(self.repo, self.repo['.'].node(), filename, True)
success.append((filename, hhash))
- ui.progress(_('Getting bfiles'), None)
+ ui.progress(_('getting bfiles'), None)
return (success, missing)
def verify(self, revs, contents=False):
@@ -147,6 +149,8 @@ 'https': (httpstore, 'httpstore'),
}
+_scheme_re = re.compile(r'^([a-zA-Z0-9+-.]+)://')
+
# During clone this function is passed the src's ui object
# but it needs the dest's ui object so it can read out of
# the config file. Use repo.ui instead.
@@ -165,7 +169,7 @@ if path:
path = hg.repository(ui, path).path
- match = url_.scheme_re.match(path)
+ match = _scheme_re.match(path)
if not match: # regular filesystem path
scheme = 'file'
else:
|
|
|
@@ -83,10 +83,10 @@
bfiletohash = {}
for ctx in ctxs:
- ui.progress(_('Converting revisions'), ctx.rev(), unit=_('revision'), total=rsrc['tip'].rev())
+ ui.progress(_('converting revisions'), ctx.rev(), unit=_('revision'), total=rsrc['tip'].rev())
_bfconvert_addchangeset(rsrc, rdst, ctx, revmap,
bfiles, normalfiles, matcher, size, bfiletohash)
- ui.progress(_('Converting revisions'), None)
+ ui.progress(_('converting revisions'), None)
if os.path.exists(rdst.wjoin(bfutil.short_name)):
shutil.rmtree(rdst.wjoin(bfutil.short_name))
@@ -101,10 +101,10 @@
else:
for ctx in ctxs:
- ui.progress(_('Converting revisions'), ctx.rev(), unit=_('revision'), total=rsrc['tip'].rev())
+ ui.progress(_('converting revisions'), ctx.rev(), unit=_('revision'), total=rsrc['tip'].rev())
_addchangeset(ui, rsrc, rdst, ctx, revmap)
- ui.progress(_('Converting revisions'), None)
+ ui.progress(_('converting revisions'), None)
except:
# we failed, remove the new directory
shutil.rmtree(rdst.root)
@@ -329,7 +329,7 @@
at = 0
for hash in files:
- ui.progress(_('Uploading bfiles'), at, unit='bfile', total=len(files))
+ ui.progress(_('uploading bfiles'), at, unit='bfile', total=len(files))
if store.exists(hash):
at += 1
continue
@@ -339,7 +339,7 @@ # XXX check for errors here
store.put(source, hash)
at += 1
- ui.progress('Uploading bfiles', None)
+ ui.progress('uploading bfiles', None)
def verify_bfiles(ui, repo, all=False, contents=False):
'''Verify that every big file revision in the current changeset
@@ -356,7 +356,7 @@ store = basestore._open_store(repo)
return store.verify(revs, contents=contents)
-def revert_bfiles(ui, repo):
+def revert_bfiles(ui, repo, file_list=None):
wlock = repo.wlock()
try:
bfdirstate = bfutil.open_bfdirstate(ui, repo)
@@ -368,21 +368,31 @@ at = 0
updated = 0
for bfile in bfiles:
- if not os.path.exists(repo.wjoin(bfutil.standin(bfile))):
- bfdirstate.remove(bfile)
- continue
- if os.path.exists(repo.wjoin(bfutil.standin(os.path.join(bfile + '.orig')))):
- shutil.copyfile(repo.wjoin(bfile), repo.wjoin(bfile + '.orig'))
- at += 1
- expectedhash = repo[None][bfutil.standin(bfile)].data().strip()
- mode = os.stat(repo.wjoin(bfutil.standin(bfile))).st_mode
- if not os.path.exists(repo.wjoin(bfile)) or expectedhash != bfutil.hashfile(repo.wjoin(bfile)):
- path = bfutil.find_file(repo, expectedhash)
- if path is None:
- toget.append((bfile, expectedhash))
- else:
- util.makedirs(os.path.dirname(repo.wjoin(bfile)))
- shutil.copy(path, repo.wjoin(bfile))
+ if file_list == None or bfile in file_list:
+ if not os.path.exists(repo.wjoin(bfutil.standin(bfile))):
+ bfdirstate.remove(bfile)
+ continue
+ if os.path.exists(repo.wjoin(bfutil.standin(os.path.join(bfile + '.orig')))):
+ shutil.copyfile(repo.wjoin(bfile), repo.wjoin(bfile + '.orig'))
+ at += 1
+ expectedhash = repo[None][bfutil.standin(bfile)].data().strip()
+ mode = os.stat(repo.wjoin(bfutil.standin(bfile))).st_mode
+ if not os.path.exists(repo.wjoin(bfile)) or expectedhash != bfutil.hashfile(repo.wjoin(bfile)):
+ path = bfutil.find_file(repo, expectedhash)
+ if path is None:
+ toget.append((bfile, expectedhash))
+ else:
+ util.makedirs(os.path.dirname(repo.wjoin(bfile)))
+ shutil.copy(path, repo.wjoin(bfile))
+ os.chmod(repo.wjoin(bfile), mode)
+ updated += 1
+ if bfutil.standin(bfile) not in repo['.']:
+ bfdirstate.add(bfutil.unixpath(bfile))
+ elif expectedhash == repo['.'][bfutil.standin(bfile)].data().strip():
+ bfdirstate.normal(bfutil.unixpath(bfile))
+ else:
+ bfutil.dirstate_normaldirty(bfdirstate, bfutil.unixpath(bfile))
+ elif os.path.exists(repo.wjoin(bfile)) and mode != os.stat(repo.wjoin(bfile)).st_mode:
os.chmod(repo.wjoin(bfile), mode)
updated += 1
if bfutil.standin(bfile) not in repo['.']:
@@ -391,19 +401,10 @@ bfdirstate.normal(bfutil.unixpath(bfile))
else:
bfutil.dirstate_normaldirty(bfdirstate, bfutil.unixpath(bfile))
- elif os.path.exists(repo.wjoin(bfile)) and mode != os.stat(repo.wjoin(bfile)).st_mode:
- os.chmod(repo.wjoin(bfile), mode)
- updated += 1
- if bfutil.standin(bfile) not in repo['.']:
- bfdirstate.add(bfutil.unixpath(bfile))
- elif expectedhash == repo['.'][bfutil.standin(bfile)].data().strip():
- bfdirstate.normal(bfutil.unixpath(bfile))
- else:
- bfutil.dirstate_normaldirty(bfdirstate, bfutil.unixpath(bfile))
if toget:
store = basestore._open_store(repo)
- (success, missing) = store.get(toget)
+ success, missing = store.get(toget)
else:
success, missing = [], []
@@ -420,24 +421,30 @@
removed = 0
for bfile in bfdirstate:
- if not os.path.exists(repo.wjoin(bfutil.standin(bfile))):
- if os.path.exists(repo.wjoin(bfile)):
- os.unlink(repo.wjoin(bfile))
- removed += 1
- if bfutil.standin(bfile) in repo['.']:
- bfdirstate.remove(bfutil.unixpath(bfile))
- else:
- bfdirstate.forget(bfutil.unixpath(bfile))
- else:
- state = repo.dirstate[bfutil.standin(bfile)]
- if state == 'n':
- bfdirstate.normal(bfile)
- elif state == 'r':
- bfdirstate.remove(bfile)
- elif state == 'a':
- bfdirstate.add(bfile)
- elif state == '?':
- bfdirstate.forget(bfile)
+ if file_list == None or bfile in file_list:
+ if not os.path.exists(repo.wjoin(bfutil.standin(bfile))):
+ if os.path.exists(repo.wjoin(bfile)):
+ os.unlink(repo.wjoin(bfile))
+ removed += 1
+ if bfutil.standin(bfile) in repo['.']:
+ bfdirstate.remove(bfutil.unixpath(bfile))
+ else:
+ bfdirstate.forget(bfutil.unixpath(bfile))
+ else:
+ state = repo.dirstate[bfutil.standin(bfile)]
+ if state == 'n':
+ bfdirstate.normal(bfile)
+ elif state == 'r':
+ bfdirstate.remove(bfile)
+ elif state == 'a':
+ bfdirstate.add(bfile)
+ elif state == '?':
+ try:
+ # Mercurial >= 1.9
+ bfdirstate.drop(bfile)
+ except AttributeError:
+ # Mercurial <= 1.8
+ bfdirstate.forget(bfile)
bfdirstate.write()
finally:
wlock.release()
@@ -456,7 +463,7 @@ removed = 0
printed = False
if bfiles:
- ui.status(_('Getting changed bfiles\n'))
+ ui.status(_('getting changed bfiles\n'))
printed = True
for bfile in bfiles:
@@ -499,11 +506,17 @@ if bfile not in bfiles:
if os.path.exists(repo.wjoin(bfile)):
if not printed:
- ui.status(_('Getting changed bfiles\n'))
+ ui.status(_('getting changed bfiles\n'))
printed = True
os.unlink(repo.wjoin(bfile))
removed += 1
- bfdirstate.forget(bfutil.unixpath(bfile))
+ path = bfutil.unixpath(bfile)
+ try:
+ # Mercurial >= 1.9
+ bfdirstate.drop(path)
+ except AttributeError:
+ # Mercurial <= 1.8
+ bfdirstate.forget(path)
bfdirstate.write()
if printed:
|
|
|
@@ -3,17 +3,19 @@ import os
import types
import copy
+import re
from mercurial import hg, extensions, commands, util, context, cmdutil, \
- match as match_, filemerge, node, archival, httprepo, error
+ match as match_, filemerge, node, archival, httprepo, error, manifest
from mercurial.i18n import _
from mercurial.node import hex
+from hgext import rebase
import bfutil, bfcommands
-def hgversion():
- from mercurial.__version__ import version
- return [int(n) for n in version.partition('+')[0].split('.')]
-hgversion = hgversion()
+try:
+ from mercurial import scmutil
+except ImportError:
+ pass
# -- Wrappers: modify existing commands --------------------------------
@@ -27,11 +29,11 @@ if hasattr(repo.__class__, 'do_cmd'):
def do_cmd(self, cmd, **args):
args['kbfiles'] = 'true'
- return super(repo.__class__, self).do_cmd(cmd, **args)
+ return super(kbfilesrepo, self).do_cmd(cmd, **args)
if hasattr(repo.__class__, '_callstream'):
def _callstream(self, cmd, **args):
args['kbfiles'] = 'true'
- return super(repo.__class__, self)._callstream(cmd, **args)
+ return super(kbfilesrepo, self)._callstream(cmd, **args)
repo.__class__ = kbfilesrepo
# bfiles doesn't support non-local repositories -- get out quick in
@@ -54,6 +56,38 @@ def status_nobfiles(self, *args, **kwargs):
return super(bfiles_repo, self).status(*args, **kwargs)
+ # When bfstatus is set, return a context that gives the names of bfiles
+ # instead of their corresponding standins and identifies the bfiles as
+ # always binary, regardless of their actual contents.
+ def __getitem__(self, changeid):
+ ctx = super(bfiles_repo, self).__getitem__(changeid)
+ if self.bfstatus:
+ class bfiles_manifestdict(manifest.manifestdict):
+ def __contains__(self, filename):
+ if super(bfiles_manifestdict, self).__contains__(filename):
+ return True
+ return super(bfiles_manifestdict, self).__contains__('.kbf/' + filename)
+ class bfiles_ctx(ctx.__class__):
+ def files(self):
+ filenames = super(bfiles_ctx, self).files()
+ return [re.sub(r'^\.kbf/', '', filename) for filename in filenames]
+ def manifest(self):
+ man1 = super(bfiles_ctx, self).manifest()
+ man1.__class__ = bfiles_manifestdict
+ return man1
+ def filectx(self, path, fileid=None, filelog=None):
+ try:
+ result = super(bfiles_ctx, self).filectx(path, fileid, filelog)
+ except error.LookupError:
+ # Adding a null character will cause Mercurial to identify this
+ # as a binary file.
+ result = super(bfiles_ctx, self).filectx('.kbf/' + path, fileid, filelog)
+ olddata = result.data
+ result.data = lambda: olddata() + '\0'
+ return result
+ ctx.__class__ = bfiles_ctx
+ return ctx
+
# Figure out the status of big files and insert them into the
# appropriate list in the result. Also removes standin files from
# the listing. This function reverts to the original status if
@@ -196,6 +230,12 @@
wlock = repo.wlock()
try:
+ if getattr(repo, "_isrebasing", False):
+ # We have to take the time to pull down the new bfiles now. Otherwise
+ # if we are rebasing, any bfiles that were modified in the changesets we
+ # are rebasing on top of get overwritten either by the rebase or in the
+ # first commit after the rebase.
+ bfcommands.update_bfiles(repo.ui, repo)
# Case 1: user calls commit with no specific files or
# include/exclude patterns: refresh and commit everything.
if (match is None) or (not match.anypats() and not match.files()):
@@ -204,11 +244,20 @@ # this only loops through bfiles that exist (not removed/renamed)
for bfile in bfiles:
if os.path.exists(self.wjoin(bfutil.standin(bfile))):
- bfutil.update_standin(self, bfutil.standin(bfile))
- bfdirstate.normal(bfutil.unixpath(bfile))
+ # this handles the case where a rebase is being performed and the
+ # working copy is not updated yet.
+ if os.path.exists(self.wjoin(bfile)):
+ bfutil.update_standin(self, bfutil.standin(bfile))
+ bfdirstate.normal(bfutil.unixpath(bfile))
for bfile in bfdirstate:
if not os.path.exists(repo.wjoin(bfutil.standin(bfile))):
- bfdirstate.forget(bfutil.unixpath(bfile))
+ path = bfutil.unixpath(bfile)
+ try:
+ # Mercurial >= 1.9
+ bfdirstate.drop(path)
+ except AttributeError:
+ # Mercurial <= 1.8
+ bfdirstate.forget(path)
bfdirstate.write()
return orig(text=text, user=user, date=date, match=match,
@@ -241,7 +290,13 @@ bfutil.update_standin(self, standin)
bfdirstate.normal(bfutil.unixpath(bfile))
else:
- bfdirstate.forget(bfutil.unixpath(bfile))
+ path = bfutil.unixpath(bfile)
+ try:
+ # Mercurial >= 1.9
+ bfdirstate.drop(path)
+ except AttributeError:
+ # Mercurial <= 1.8
+ bfdirstate.forget(path)
bfdirstate.write()
# Cook up a new matcher that only matches regular files or
@@ -349,7 +404,12 @@ bfmatcher = match_.match(repo.root, '', list(bfpats))
bfnames = []
- m = cmdutil.match(repo, pats, opts)
+ try:
+ # Mercurial >= 1.9
+ m = scmutil.match(repo[None], pats, opts)
+ except ImportError:
+ # Mercurial <= 1.8
+ m = cmdutil.match(repo, pats, opts)
m.bad = lambda x,y: None
wctx = repo[None]
for f in repo.walk(m):
@@ -393,7 +453,12 @@ finally:
wlock.release()
- oldmatch = cmdutil.match
+ try:
+ # Mercurial >= 1.9
+ oldmatch = scmutil.match
+ except ImportError:
+ # Mercurial <= 1.8
+ oldmatch = cmdutil.match
manifest = repo[None].manifest()
def override_match(repo, pats=[], opts={}, globbed=False, default='relpath'):
match = oldmatch(repo, pats, opts, globbed, default)
@@ -404,15 +469,27 @@ orig_matchfn = m.matchfn
m.matchfn = lambda f: notbfile(f) and orig_matchfn(f) or None
return m
- cmdutil.match = override_match
- result = orig(ui, repo, *pats, **opts)
- cmdutil.match = oldmatch
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ result = orig(ui, repo, *pats, **opts)
+ scmutil.match = oldmatch
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = override_match
+ result = orig(ui, repo, *pats, **opts)
+ cmdutil.match = oldmatch
return (result is 1 or bad) and 1 or 0
def override_remove(orig, ui, repo, *pats, **opts):
wctx = repo[None].manifest()
- oldmatch = cmdutil.match
+ try:
+ # Mercurial >= 1.9
+ oldmatch = scmutil.match
+ except ImportError:
+ # Mercurial <= 1.8
+ oldmatch = cmdutil.match
def override_match(repo, pats=[], opts={}, globbed=False, default='relpath'):
match = oldmatch(repo, pats, opts, globbed, default)
m = copy.copy(match)
@@ -422,14 +499,26 @@ orig_matchfn = m.matchfn
m.matchfn = lambda f: orig_matchfn(f) and notbfile(f)
return m
- cmdutil.match = override_match
- orig(ui, repo, *pats, **opts)
- cmdutil.match = oldmatch
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ orig(ui, repo, *pats, **opts)
+ scmutil.match = oldmatch
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = override_match
+ orig(ui, repo, *pats, **opts)
+ cmdutil.match = oldmatch
after, force = opts.get('after'), opts.get('force')
if not pats and not after:
raise util.Abort(_('no files specified'))
- m = cmdutil.match(repo, pats, opts)
+ try:
+ # Mercurial >= 1.9
+ m = scmutil.match(repo[None], pats, opts)
+ except ImportError:
+ # Mercurial <= 1.8
+ m = cmdutil.match(repo, pats, opts)
try:
repo.bfstatus = True
s = repo.status(match=m, clean=True)
@@ -485,6 +574,13 @@ finally:
repo.bfstatus = False
+def override_log(orig, ui, repo, *pats, **opts):
+ try:
+ repo.bfstatus = True
+ orig(ui, repo, *pats, **opts)
+ finally:
+ repo.bfstatus = False
+
def override_verify(orig, ui, repo, *pats, **opts):
bf = opts.pop('bf', False)
all = opts.pop('bfa', False)
@@ -572,9 +668,20 @@ return orig(ui, repo, pats, opts, rename)
def makestandin(relpath):
- return os.path.join(os.path.relpath('.', repo.getcwd()), bfutil.standin(util.canonpath(repo.root, repo.getcwd(), relpath)))
+ try:
+ # Mercurial >= 1.9
+ path = scmutil.canonpath(repo.root, repo.getcwd(), relpath)
+ except ImportError:
+ # Mercurial <= 1.8
+ path = util.canonpath(repo.root, repo.getcwd(), relpath)
+ return os.path.join(os.path.relpath('.', repo.getcwd()), bfutil.standin(path))
- fullpats = cmdutil.expandpats(pats)
+ try:
+ # Mercurial >= 1.9
+ fullpats = scmutil.expandpats(pats)
+ except ImportError:
+ # Mercurial <= 1.8
+ fullpats = cmdutil.expandpats(pats)
dest = fullpats[-1]
if os.path.isdir(dest):
@@ -585,7 +692,12 @@ # then replace it to just match bfiles and run it again
nonormalfiles = False
nobfiles = False
- oldmatch = cmdutil.match
+ try:
+ # Mercurial >= 1.9
+ oldmatch = scmutil.match
+ except ImportError:
+ # Mercurial <= 1.8
+ oldmatch = cmdutil.match
try:
manifest = repo[None].manifest()
def override_match(repo, pats=[], opts={}, globbed=False, default='relpath'):
@@ -597,7 +709,12 @@ orig_matchfn = m.matchfn
m.matchfn = lambda f: notbfile(f) and orig_matchfn(f) or None
return m
- cmdutil.match = override_match
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = override_match
result = orig(ui, repo, pats, opts, rename)
except util.Abort as e:
if str(e) != 'no files to copy':
@@ -606,7 +723,12 @@ nonormalfiles = True
result = 0
finally:
- cmdutil.match = oldmatch
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = oldmatch
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = oldmatch
# The first rename can cause our current working directory to be removed. In that case
# there is nothing left to copy/rename so just quit.
@@ -637,7 +759,12 @@ orig_matchfn = m.matchfn
m.matchfn = lambda f: bfutil.is_standin(f) and bfile(bfutil.split_standin(f)) and orig_matchfn(bfutil.split_standin(f)) or None
return m
- cmdutil.match = override_match
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ except ImportError:
+ # Mercurial <= 1.9
+ cmdutil.match = override_match
listpats = []
for pat in pats:
if match_.patkind(pat) != None:
@@ -682,7 +809,12 @@ else:
nobfiles = True
finally:
- cmdutil.match = oldmatch
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = oldmatch
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = oldmatch
wlock.release()
if nobfiles and nonormalfiles:
@@ -690,6 +822,10 @@
return result
+# When the user calls revert, we have to be careful to not revert any changes to other
+# bfiles accidentally. This means we have to keep track of the bfiles that are
+# being reverted so we only pull down the necessary bfiles.
+#
# Standins are only updated (to match the hash of bfiles) before commits.
# Update the standins then run the original revert (changing the matcher to hit standins
# instead of bfiles). Based on the resulting standins update the bfiles. Then return the
@@ -705,14 +841,23 @@ for bfile in modified:
bfutil.update_standin(repo, bfutil.standin(bfile))
- oldmatch = cmdutil.match
+ try:
+ # Mercurial >= 1.9
+ oldmatch = scmutil.match
+ except ImportError:
+ # Mercurial <= 1.8
+ oldmatch = cmdutil.match
try:
ctx = repo[opts.get('rev')]
- def override_match(repo, pats=[], opts={}, globbed=False, default='relpath'):
- match = oldmatch(repo, pats, opts, globbed, default)
+ def override_match(ctxorrepo, pats=[], opts={}, globbed=False, default='relpath'):
+ if hasattr(ctxorrepo, 'match'):
+ ctx0 = ctxorrepo
+ else:
+ ctx0 = ctxorrepo[None]
+ match = oldmatch(ctxorrepo, pats, opts, globbed, default)
m = copy.copy(match)
def tostandin(f):
- if bfutil.standin(f) in repo[None] or bfutil.standin(f) in ctx:
+ if bfutil.standin(f) in ctx0 or bfutil.standin(f) in ctx:
return bfutil.standin(f)
return f
m._files = [tostandin(f) for f in m._files]
@@ -720,18 +865,42 @@ orig_matchfn = m.matchfn
def matchfn(f):
if bfutil.is_standin(f):
- return orig_matchfn(bfutil.split_standin(f)) and (f in repo[None] or f in ctx)
+ # We need to keep track of what bfiles are being matched so we know which
+ # ones to update later (otherwise we revert changes to other bfiles
+ # accidentally). This is repo specific, so duckpunch the repo object to
+ # keep the list of bfiles for us later.
+ if(orig_matchfn(bfutil.split_standin(f)) and (f in repo[None] or f in ctx)):
+ bfiles_list = getattr(repo, '_bfiles_to_update', [])
+ bfiles_list.append(bfutil.split_standin(f))
+ repo._bfiles_to_update = bfiles_list;
+ return True
+ else:
+ return False
return orig_matchfn(f)
m.matchfn = matchfn
return m
- cmdutil.match = override_match
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = override_match
orig(ui, repo, *pats, **opts)
finally:
- cmdutil.match = oldmatch
- bfcommands.revert_bfiles(ui, repo)
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = oldmatch
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = oldmatch
+ bfiles_list = getattr(repo, '_bfiles_to_update', [])
+ bfcommands.revert_bfiles(ui, repo, bfiles_list)
+ # Empty out the bfiles list so we start fresh next time
+ repo._bfiles_to_update = []
for bfile in modified:
- if os.path.exists(repo.wjoin(bfutil.standin(bfile))) and bfile in repo['.']:
- bfutil.write_standin(repo, bfutil.standin(bfile), repo['.'][bfile].data().strip(), 'x' in repo['.'][bfile].flags())
+ if bfile in bfiles_list:
+ if os.path.exists(repo.wjoin(bfutil.standin(bfile))) and bfile in repo['.']:
+ bfutil.write_standin(repo, bfutil.standin(bfile), repo['.'][bfile].data().strip(), 'x' in repo['.'][bfile].flags())
finally:
wlock.release()
@@ -752,14 +921,50 @@ return result
# When we rebase a repository with remotely changed bfiles, we need
-# to explicitly do a clean update so that the entries in .kbf are
-# udpated and the new bfiles are pulled
+# to take some extra care so that the bfiles are correctly updated
+# in the working copy
def override_pull(orig, ui, repo, source="default", **opts):
- result = orig(ui, repo, source, **opts)
if opts.get('rebase', False):
- commands.update(repo.ui, repo, clean = True)
+ repo._isrebasing = True
+ try:
+ if opts.get('update'):
+ del opts['update']
+ ui.debug('--update and --rebase are not compatible, ignoring '
+ 'the update flag\n')
+ del opts['rebase']
+ try:
+ # Mercurial >= 1.9
+ cmdutil.bailifchanged(repo)
+ except AttributeError:
+ # Mercurial <= 1.8
+ cmdutil.bail_if_changed(repo)
+ revsprepull = len(repo)
+ origpostincoming = commands.postincoming
+ def _dummy(*args, **kwargs):
+ pass
+ commands.postincoming = _dummy
+ try:
+ result = commands.pull(ui, repo, source, **opts)
+ finally:
+ commands.postincoming = origpostincoming
+ revspostpull = len(repo)
+ if revspostpull > revsprepull:
+ result = result or rebase.rebase(ui, repo)
+ branch = repo[None].branch()
+ dest = repo[branch].rev()
+ finally:
+ repo._isrebasing = False
+ else:
+ result = orig(ui, repo, source, **opts)
return result
+def override_rebase(orig, ui, repo, **opts):
+ repo._isrebasing = True
+ try:
+ orig(ui, repo, **opts)
+ finally:
+ repo._isrebasing = False
+
def override_archive(orig, repo, dest, node, kind, decode=True, matchfn=None,
prefix=None, mtime=None, subrepos=None):
# No need to lock because we are only reading history and bfile caches
@@ -846,9 +1051,9 @@ archiver.done()
# If a bfile is modified the change is not reflected in its standin until a commit.
-# cmdutil.bail_if_changed raises an exception if the repo has uncommitted changes.
+# cmdutil.bailifchanged raises an exception if the repo has uncommitted changes.
# Wrap it to also check if bfiles were changed. This is used by bisect and backout.
-def override_bail_if_changed(orig, repo):
+def override_bailifchanged(orig, repo):
orig(repo)
repo.bfstatus = True
modified, added, removed, deleted = repo.status()[:4]
@@ -867,7 +1072,12 @@
def override_forget(orig, ui, repo, *pats, **opts):
wctx = repo[None].manifest()
- oldmatch = cmdutil.match
+ try:
+ # Mercurial >= 1.9
+ oldmatch = scmutil.match
+ except ImportError:
+ # Mercurial <= 1.8
+ oldmatch = cmdutil.match
def override_match(repo, pats=[], opts={}, globbed=False, default='relpath'):
match = oldmatch(repo, pats, opts, globbed, default)
m = copy.copy(match)
@@ -877,11 +1087,19 @@ orig_matchfn = m.matchfn
m.matchfn = lambda f: orig_matchfn(f) and notbfile(f)
return m
- cmdutil.match = override_match
- orig(ui, repo, *pats, **opts)
- cmdutil.match = oldmatch
+ try:
+ # Mercurial >= 1.9
+ scmutil.match = override_match
+ orig(ui, repo, *pats, **opts)
+ scmutil.match = oldmatch
+ m = scmutil.match(repo[None], pats, opts)
+ except ImportError:
+ # Mercurial <= 1.8
+ cmdutil.match = override_match
+ orig(ui, repo, *pats, **opts)
+ cmdutil.match = oldmatch
+ m = cmdutil.match(repo, pats, opts)
- m = cmdutil.match(repo, pats, opts)
try:
repo.bfstatus = True
s = repo.status(match=m, clean=True)
@@ -1000,6 +1218,23 @@
return orig(ui, repo, *pats, **opts)
+# Calling purge with --all will cause the kbfiles to be deleted.
+# Override repo.status to prevent this from happening.
+def override_purge(orig, ui, repo, *dirs, **opts):
+ oldstatus = repo.status
+ def override_status(node1='.', node2=None, match=None, ignored=False,
+ clean=False, unknown=False, listsubrepos=False):
+ r = oldstatus(node1, node2, match, ignored, clean, unknown,
+ listsubrepos)
+ bfdirstate = bfutil.open_bfdirstate(ui, repo)
+ modified, added, removed, deleted, unknown, ignored, clean = r
+ unknown = [f for f in unknown if bfdirstate[f] == '?']
+ ignored = [f for f in ignored if bfdirstate[f] == '?']
+ return modified, added, removed, deleted, unknown, ignored, clean
+ repo.status = override_status
+ orig(ui, repo, *dirs, **opts)
+ repo.status = oldstatus
+
def uisetup(ui):
# Disable auto-status for some commands which assume that all
# files in the result are under Mercurial's control
@@ -1013,6 +1248,7 @@ entry = extensions.wrapcommand(commands.table, 'remove', override_remove)
entry = extensions.wrapcommand(commands.table, 'forget', override_forget)
entry = extensions.wrapcommand(commands.table, 'status', override_status)
+ entry = extensions.wrapcommand(commands.table, 'log', override_log)
entry = extensions.wrapcommand(commands.table, 'verify', override_verify)
verifyopt = [('', 'bf', None, _('verify bfiles')),
@@ -1044,10 +1280,17 @@ extensions.wrapfunction(hg, 'merge', hg_merge)
extensions.wrapfunction(archival, 'archive', override_archive)
- extensions.wrapfunction(cmdutil, 'bail_if_changed', override_bail_if_changed)
+ if hasattr(cmdutil, 'bailifchanged'):
+ extensions.wrapfunction(cmdutil, 'bailifchanged', override_bailifchanged)
+ else:
+ extensions.wrapfunction(cmdutil, 'bail_if_changed', override_bailifchanged)
for name, module in extensions.extensions():
if name == 'fetch':
extensions.wrapcommand(getattr(module, 'cmdtable'), 'fetch', override_fetch)
+ if name == 'purge':
+ extensions.wrapcommand(getattr(module, 'cmdtable'), 'purge', override_purge)
+ if name == 'rebase':
+ extensions.wrapcommand(getattr(module, 'cmdtable'), 'rebase', override_rebase)
|
|
@@ -10,6 +10,11 @@ util, dirstate, cmdutil, match as match_
from mercurial.i18n import _
+try:
+ from mercurial import scmutil
+except ImportError:
+ pass
+
short_name = '.kbf'
long_name = 'kilnbfiles'
@@ -40,7 +45,25 @@ remove = repo.remove
except AttributeError:
# Mercurial >= 1.6
- remove = repo[None].remove
+ try:
+ # Mercurial <= 1.8
+ remove = repo[None].remove
+ except AttributeError:
+ # Mercurial >= 1.9
+ def remove(list, unlink):
+ wlock = repo.wlock()
+ try:
+ if unlink:
+ for f in list:
+ try:
+ util.unlinkpath(repo.wjoin(f))
+ except OSError, inst:
+ if inst.errno != errno.ENOENT:
+ raise
+ repo[None].forget(list)
+ finally:
+ wlock.release()
+
return remove(list, unlink=unlink)
def repo_forget(repo, list):
@@ -74,13 +97,22 @@ return repo.findoutgoing(remote)
except AttributeError:
from mercurial import discovery
- return discovery.findoutgoing(repo, remote, force=force)
+ try:
+ # Mercurial <= 1.8
+ return discovery.findoutgoing(repo, remote, force=force)
+ except AttributeError:
+ # Mercurial >= 1.9
+ common, _anyinc, _heads = discovery.findcommonincoming(repo, remote, force=force)
+ return repo.changelog.findmissing(common)
# -- Private worker functions ------------------------------------------
if os.name == 'nt':
from mercurial import win32
- linkfn = win32.os_link
+ try:
+ linkfn = win32.oslink
+ except:
+ linkfn = win32.os_link
else:
linkfn = os.link
@@ -123,7 +155,12 @@ repo root, but it is saved in .hg/bfiles/dirstate.
'''
admin = repo.join(long_name)
- opener = util.opener(admin)
+ try:
+ # Mercurial >= 1.9
+ opener = scmutil.opener(admin)
+ except ImportError:
+ # Mercurial <= 1.8
+ opener = util.opener(admin)
if hasattr(repo.dirstate, '_validate'):
bfdirstate = dirstate.dirstate(opener, ui, repo.root, repo.dirstate._validate)
else:
@@ -225,6 +262,10 @@ if pats:
# patterns supplied: search .hgbfiles relative to current dir
cwd = repo.getcwd()
+ if os.path.isabs(cwd):
+ # cwd is an absolute path for hg -R <reponame>
+ # work relative to the repository root in this case
+ cwd = ''
pats = [os.path.join(standin_dir, cwd, pat) for pat in pats]
elif os.path.isdir(standin_dir):
# no patterns: relative to repo root
@@ -240,7 +281,13 @@ '''Wrapper around cmdutil.match() that adds showbad: if false, neuter
the match object\'s bad() method so it does not print any warnings
about missing files or directories.'''
- match = cmdutil.match(repo, pats, opts)
+ try:
+ # Mercurial >= 1.9
+ match = scmutil.match(repo[None], pats, opts)
+ except ImportError:
+ # Mercurial <= 1.8
+ match = cmdutil.match(repo, pats, opts)
+
if not showbad:
match.bad = lambda f, msg: None
return match
@@ -286,9 +333,10 @@
def update_standin(repo, standin):
file = repo.wjoin(split_standin(standin))
- hash = hashfile(file)
- executable = get_executable(file)
- write_standin(repo, standin, hash, executable)
+ if os.path.exists(file):
+ hash = hashfile(file)
+ executable = get_executable(file)
+ write_standin(repo, standin, hash, executable)
def read_standin(repo, standin):
'''read hex hash from <repo.root>/<standin>'''
@@ -318,6 +366,8 @@ return hashfile(repo.wjoin(file))
def hashfile(file):
+ if not os.path.exists(file):
+ return ''
hasher = util.sha1('')
with open(file, 'rb') as fd:
for data in blockstream(fd):
|
@@ -1,11 +1,17 @@ '''HTTP-based store.'''
+import inspect
import urlparse
import urllib2
from mercurial import util, url as url_
from mercurial.i18n import _
+try:
+ from mercurial import httpconnection
+except ImportError:
+ pass
+
import bfutil, basestore
class httpstore(basestore.basestore):
@@ -14,7 +20,12 @@ url = bfutil.urljoin(url, 'bfile')
super(httpstore, self).__init__(ui, repo, url)
self.rawurl, self.path = urlparse.urlsplit(self.url)[1:3]
- (baseurl, authinfo) = url_.getauthinfo(self.url)
+ try:
+ # Mercurial >= 1.9
+ baseurl, authinfo = util.url(self.url).authinfo()
+ except AttributeError:
+ # Mercurial <= 1.8
+ baseurl, authinfo = url_.getauthinfo(self.url)
self.opener = url_.opener(self.ui, authinfo)
def put(self, source, hash):
@@ -29,10 +40,24 @@ return
self.ui.debug('httpstore.sendfile(%s, %s)\n' % (filename, hash))
- baseurl, authinfo = url_.getauthinfo(self.url)
+ try:
+ # Mercurial >= 1.9
+ baseurl, authinfo = util.url(self.url).authinfo()
+ except AttributeError:
+ # Mercurial <= 1.8
+ baseurl, authinfo = url_.getauthinfo(self.url)
fd = None
try:
- fd = url_.httpsendfile(filename, 'rb')
+ try:
+ # Mercurial >= 1.9
+ fd = httpconnection.httpsendfile(self.ui, filename, 'rb')
+ except ImportError:
+ if 'ui' in inspect.getargspec(url_.httpsendfile.__init__)[0]:
+ # Mercurial == 1.8
+ fd = url_.httpsendfile(self.ui, filename, 'rb')
+ else:
+ # Mercurial <= 1.7
+ fd = url_.httpsendfile(filename, 'rb')
request = urllib2.Request(bfutil.urljoin(baseurl, hash), fd)
try:
url = self.opener.open(request)
@@ -45,7 +70,12 @@ if fd: fd.close()
def _getfile(self, tmpfile, filename, hash):
- (baseurl, authinfo) = url_.getauthinfo(self.url)
+ try:
+ # Mercurial >= 1.9
+ baseurl, authinfo = util.url(self.url).authinfo()
+ except AttributeError:
+ # Mercurial <= 1.8
+ baseurl, authinfo = url_.getauthinfo(self.url)
url = bfutil.urljoin(baseurl, hash)
try:
request = urllib2.Request(url)
@@ -62,7 +92,12 @@ return bfutil.copy_and_hash(bfutil.blockstream(infile), tmpfile)
def _verify(self, hash):
- baseurl, authinfo = url_.getauthinfo(self.url)
+ try:
+ # Mercurial >= 1.9
+ baseurl, authinfo = util.url(self.url).authinfo()
+ except AttributeError:
+ # Mercurial <= 1.8
+ baseurl, authinfo = url_.getauthinfo(self.url)
store_path = bfutil.urljoin(baseurl, hash)
request = urllib2.Request(store_path)
request.add_header('SHA1-Request', hash)
@@ -76,7 +111,12 @@ return False
def _verifyfile(self, cctx, cset, contents, standin, verified):
- baseurl, authinfo = url_.getauthinfo(self.url)
+ try:
+ # Mercurial >= 1.9
+ baseurl, authinfo = util.url(self.url).authinfo()
+ except AttributeError:
+ # Mercurial <= 1.8
+ baseurl, authinfo = url_.getauthinfo(self.url)
filename = bfutil.split_standin(standin)
if not filename:
return False
|
@@ -4,4 +4,7 @@ python <path to Mercurial source directory>/tests/run-tests.py
For the tests that use Kiln, you need to change the Kiln settings in
-kilntest.py.
+custom.py. Also, you must run at least one operation that involves
+interacting with the Kiln server and entering your username and password
+so that they are stored in the kilnauth extension prior to running the
+tests.
|
@@ -2,19 +2,43 @@ import os
import stat
import subprocess
+import re
import hgtest
+import kilntest
# assumes we're run by hg's run-tests.py
-TESTDIR = os.environ['TESTDIR']
-
STOREDIR = os.path.join(os.getcwd(), 'store')
DEFAULTRC = {
- 'extensions': [('kbfiles', '%s/../kbfiles' % TESTDIR),],
+ 'extensions': [('kbfiles', kilntest.KBFILESPATH),
+ ('rebase', '')],
'kilnbfiles': [('systemcache', os.path.join(os.getcwd(), 'bfilesstore')),],
}
+def getversion():
+ hgname = 'hg'
+ if os.name == 'nt':
+ for path in os.environ['PATH'].split(';'):
+ if os.path.exists(os.path.join(path, 'hg')):
+ hgname = r'python %s\hg' % path
+ break
+ cmd = [hgname, 'version']
+ child = subprocess.Popen(
+ cmd,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ universal_newlines=True)
+ stdout, stderr = child.communicate()
+ versions = re.findall(r'\d+\.\d+\.\d+', stdout)
+ parts = [re.match(r'\d+', v).group(0) for v in versions[0].split('.')]
+ version = [0, 0, 0]
+ for i, part in enumerate(map(int, parts)):
+ version[i] = part
+ return tuple(version)
+
+version = getversion()
+
class BfilesTester(hgtest.Tester):
def updaterc(self, extraconfig=None):
'''Append configuration settings to $HGRCPATH to configure bfiles
@@ -205,4 +229,3 @@ hgt.asserttrue(checkdirs(repo1, repo2), 'repos dont match at %d' % i)
hgt.hg(['up', '-R', repo1, '-C'], stdout=hgt.ANYTHING, log=False)
hgt.hg(['up', '-R', repo2, '-C'], stdout=hgt.ANYTHING, log=False)
-
|
|
@@ -0,0 +1,10 @@ + # Update the four variables below
+# Your local kiln must have a project Test with a repo group called Test
+# A repo Test in that group, as well as a branch repository TestBranch, will
+# be created as part of the tests. The username and password given must have
+# write access to that repo group.
+
+KILNEXTPATH = '~/kiln/extensions'
+KILNURL = 'http://localhost/FogBugz/kiln'
+USER = 'test'
+PASSWORD = 'tester'
|
|
@@ -1,19 +1,26 @@ import json
import sys
+import os
import time
+import getpass
import urllib2
from urllib import urlencode
-# Update the four variables below
-# Your local kiln must have a project Test with a repo group called Test
-# The repo test in that group will be used for testing. The username
-# and password given must have write access to that group.
+from custom import *
-KILNAUTHPATH = '/code/kiln/2-0/extensions/kilnauth.py'
-KILNURL = 'http://localhost/FogBugz/kiln'
-USER = 'test'
-PASSWORD = 'tester'
+# Ensure that the home directory is set appropriately so that the kilnauth
+# cookies will be found. This is important because Mercurial 1.9 and later
+# changes the home directory in the test script.
+os.environ['HOME'] = os.path.expanduser('~' + getpass.getuser());
+# Paths for the individual extensions
+KBFILESPATH = KILNEXTPATH + '/bfiles/kbfiles'
+KILNAUTHPATH = KILNEXTPATH + '/kilnauth.py'
+GESTALTPATH = KILNEXTPATH + '/gestalt.py'
+KILNPATHPATH = KILNEXTPATH + '/kilnpath.py'
+BIGPUSHPATH = KILNEXTPATH + '/big-push.py'
+KILNPATH = KILNEXTPATH + '/kiln.py'
+CASEGUARDPATH = KILNEXTPATH + '/caseguard.py'
def api(url):
return KILNURL + '/api/1.0/' + url
@@ -27,7 +34,7 @@ return obj
def gettoken():
- return slurp(api('Auth/Login'), dict(sUser='test', sPassword='tester'))
+ return slurp(api('Auth/Login'), dict(sUser=USER, sPassword=PASSWORD))
def createtest(hgt, token):
projects = slurp(api('Project'), dict(token=token))
@@ -53,12 +60,43 @@ while slurp(api('Repo/%d' % ixRepo), dict(token=token))['sStatus'] != 'good':
time.sleep(0.1)
- return (KILNURL + '/Repo/Test/Test/test', ixRepo)
+ return (KILNURL + '/Repo/Test/Test/Test', ixRepo)
+
+def createtestbranch(hgt, token, ixParent):
+ projects = slurp(api('Project'), dict(token=token))
+
+ found = False
+ for project in projects:
+ if project['sName'] == 'Test':
+ ixProject = project['ixProject']
+ for group in project['repoGroups']:
+ if group['sName'] == 'Test':
+ ixRepoGroup = group['ixRepoGroup']
+ found = True
+
+ if not found:
+ return None
+
+ time.sleep(1)
+ while slurp(api('Repo/%d' % ixParent), dict(token=token))['sStatus'] != 'good':
+ time.sleep(0.1)
+
+ repo = slurp(api('Repo/Create'), dict(sName='TestBranch', sDescription='test branch', ixRepoGroup=ixRepoGroup, ixParent=ixParent, fCentral=False, sDefaultPermission='write', token=token))
+ ixRepo = repo['ixRepo']
+
+ hgt.asserttrue(isinstance(ixRepo, int), 'Create failed %s' % (str(ixRepo)))
+
+ time.sleep(1)
+ while slurp(api('Repo/%d' % ixRepo), dict(token=token))['sStatus'] != 'good':
+ time.sleep(0.1)
+
+ return (KILNURL + '/Repo/Test/Test/TestBranch', ixRepo)
def deletetest(hgt, token):
projects = slurp(api('Project'), dict(token=token))
found = False
+ foundbranch = False
for project in projects:
if project['sName'] == 'Test':
ixProject = project['ixProject']
@@ -69,14 +107,22 @@ if repo['sName'] == 'Test':
ixRepo = repo['ixRepo']
found = True
- if not found:
- return None
- slurp(api('Repo/%d/Delete' % ixRepo), dict(token=token), post=True)
-
- try:
- while True:
- slurp(api('Repo/%d' % ixRepo), dict(token=token))
- time.sleep(0.1)
- except urllib2.HTTPError:
- pass
-
+ if repo['sName'] == 'TestBranch':
+ ixBranch = repo['ixRepo']
+ foundbranch = True
+ if foundbranch:
+ slurp(api('Repo/%d/Delete' % ixBranch), dict(token=token), post=True)
+ try:
+ while True:
+ slurp(api('Repo/%d' % ixBranch), dict(token=token))
+ time.sleep(0.1)
+ except urllib2.HTTPError:
+ pass
+ if found:
+ slurp(api('Repo/%d/Delete' % ixRepo), dict(token=token), post=True)
+ try:
+ while True:
+ slurp(api('Repo/%d' % ixRepo), dict(token=token))
+ time.sleep(0.1)
+ except urllib2.HTTPError:
+ pass
|
|
|
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Every commit needs time stamps so that the commits are unique (Mercurial backout test
# does the same thing).
@@ -49,7 +49,7 @@C dir/n2
''')
hgt.hg(['backout', '2', '-d', '3 0'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
adding ../.kbf/dir/dir/b3
adding dir/n3
@@ -68,7 +68,7 @@hgt.asserttrue(hgt.readfile('dir/n3') == 'n3', 'file changed')
hgt.asserttrue(hgt.readfile('dir/b3') == 'b3', 'file changed')
hgt.hg(['backout', '3', '-d', '4 0'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
removing ../.kbf/dir/dir/b3
removing dir/n3
@@ -86,23 +86,23 @@hgt.assertfalse(os.path.exists('dir/b3'), 'file shouldnt exist')
hgt.announce('backout... from the past!')
hgt.hg(['backout', '2', '-d', '5 0', '--merge'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
adding ../.kbf/dir/dir/b3
adding dir/n3
created new head
changeset 5:df61b823c9a6 backs out changeset 2:99a2429e853e
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 1 removed
merging with changeset 5:df61b823c9a6
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
''')
hgt.hg(['commit', '-m', 'merge', '-d', '6 0'])
hgt.hg(['backout', '1', '--merge', '-d', '7 0'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
reverting ../.kbf/dir/b1
reverting ../.kbf/dir/dir/dir/b4
@@ -110,12 +110,12 @@reverting n1
created new head
changeset 7:5e72be42125c backs out changeset 1:837f6fa72847
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
merging with changeset 7:5e72be42125c
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('n1') == 'n1', 'file should match start')
@@ -129,7 +129,7 @@hgt.hg(['commit', '-m', 'merge', '-d', '8 0'])
hgt.hg(['up', '-r', '0'],
stdout='''4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('n1') == 'n1', 'file should match start')
@@ -142,7 +142,7 @@hgt.asserttrue(hgt.readfile('dir/dir/b4') == 'b4', 'file should match start')
hgt.hg(['up'],
stdout='''4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('n1') == 'n1', 'file should match start')
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test various tricky bfadd corner cases.
@@ -52,7 +52,7 @@hgt.hg(['bisect', '-b'],
stdout='''Testing changeset 2:04f4251bb360 (4 changesets remaining, ~2 tests)
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.writefile('big1', 'blah')
@@ -60,7 +60,7 @@hgt.hg(['revert', '-a'], stdout='reverting .kbf/big1\n')
hgt.hg(['bisect', '-g'], stdout='''Testing changeset 3:bbc1532f9dcf (2 changesets remaining, ~1 tests)
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.hg(['bisect', '-b'],
@@ -73,7 +73,7 @@''')
hgt.hg(['up'],
stdout='''4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
@@ -93,25 +93,25 @@hgt.hg(['bisect', '-b'])
hgt.hg(['up', '-r', '1'],
stdout='''4 files updated, 0 files merged, 2 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 1 removed
''')
hgt.hg(['bisect', '-g'],
stdout='''Testing changeset 3:bbc1532f9dcf (5 changesets remaining, ~2 tests)
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.hg(['bisect', '-g'],
stdout='''Testing changeset 4:de7b6579c9e2 (3 changesets remaining, ~1 tests)
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.hg(['bisect', '-g'],
stdout='''Testing changeset 5:5e56aef38802 (2 changesets remaining, ~1 tests)
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 1 removed
''')
hgt.hg(['bisect', '-g'],
@@ -125,6 +125,6 @@''')
hgt.hg(['up'],
stdout='''2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
''')
|
|
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test cloning a repo
@@ -54,7 +54,7 @@hgt.hg(['clone', 'repo1', 'repo2'],
stdout=('updating to branch default\n'
'7 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
files = ['normal1', 'sub/normal2', 'sub/normal3.txt', 'sub/normal4.txt', 'big1', 'sub/big2', 'sub/big3.txt']
for file in files:
@@ -64,12 +64,12 @@os.chdir('repo1')
hgt.hg(['up', '-r', '0'],
stdout=('2 files updated, 0 files merged, 3 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'0 big files updated, 3 removed\n'))
os.chdir('../repo2')
hgt.hg(['up', '-r', '0'],
stdout=('2 files updated, 0 files merged, 3 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'0 big files updated, 3 removed\n'))
os.chdir('..')
for file in files:
@@ -79,12 +79,12 @@os.chdir('repo1')
hgt.hg(['up', '-r', '1'],
stdout=('3 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
os.chdir('../repo2')
hgt.hg(['up', '-r', '1'],
stdout=('3 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
os.chdir('..')
for file in files:
@@ -94,12 +94,12 @@os.chdir('repo1')
hgt.hg(['up', '-r', '2'],
stdout=('4 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'2 big files updated, 0 removed\n'))
os.chdir('../repo2')
hgt.hg(['up', '-r', '2'],
stdout=('4 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'2 big files updated, 0 removed\n'))
os.chdir('..')
for file in files:
@@ -109,7 +109,7 @@hgt.hg(['clone', '-U', 'repo2', 'repo3'])
os.chdir('repo3')
hgt.hg(['up'], stdout=('7 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
os.chdir('..')
for file in files:
@@ -119,12 +119,12 @@os.chdir('repo2')
hgt.hg(['up', '-r', '0'],
stdout=('2 files updated, 0 files merged, 3 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'0 big files updated, 3 removed\n'))
os.chdir('../repo3')
hgt.hg(['up', '-r', '0'],
stdout=('2 files updated, 0 files merged, 3 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'0 big files updated, 3 removed\n'))
os.chdir('..')
for file in files:
@@ -134,12 +134,12 @@os.chdir('repo2')
hgt.hg(['up', '-r', '1'],
stdout=('3 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
os.chdir('../repo3')
hgt.hg(['up', '-r', '1'],
stdout=('3 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'3 big files updated, 0 removed\n'))
os.chdir('..')
for file in files:
@@ -149,12 +149,12 @@os.chdir('repo2')
hgt.hg(['up', '-r', '2'],
stdout=('4 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'2 big files updated, 0 removed\n'))
os.chdir('../repo3')
hgt.hg(['up', '-r', '2'],
stdout=('4 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'2 big files updated, 0 removed\n'))
os.chdir('..')
for file in files:
@@ -185,7 +185,7 @@ hgt.asserttrue(file.startswith('.hg'), 'files shouldnt exist')
hgt.hg(['up'],
stdout='''17 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
7 big files updated, 0 removed
''')
os.chdir('..')
@@ -202,13 +202,13 @@os.chdir('repo3')
hgt.hg(['up', '-r', '2'],
stdout='''0 files updated, 0 files merged, 10 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 4 removed
''')
os.chdir('../repo4')
hgt.hg(['up', '-r', '2'],
stdout='''0 files updated, 0 files merged, 10 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 4 removed
''')
os.chdir('..')
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Test commit (lots of other tests commit all files so just try committing specific files)
#
@@ -55,3 +55,8 @@''')
hgt.hg(['commit', '-m', 'adding', 'dir/b2', 'dir/n2'])
hgt.hg(['status'])
+hgt.writefile('b1', 'b11')
+hgt.hg(['status'],
+ stdout='M b1\n')
+hgt.hg(['commit', '-m', 'modifying b1'])
+hgt.asserttrue(hgt.readfile('b1') == 'b11', 'file contents dont match')
|
@@ -11,3 +11,5 @@ hg status
hg commit -m adding dir/b2 dir/n2
hg status
+hg status
+hg commit -m 'modifying b1'
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test various tricky bfadd corner cases.
@@ -165,7 +165,7 @@''')
hgt.hg(['up'],
stdout='''8 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
6 big files updated, 0 removed
''')
hgt.asserttrue(os.path.exists('.kbf'), 'bfile standins should exist')
@@ -213,7 +213,7 @@''')
hgt.hg(['up'],
stdout='''8 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
8 big files updated, 0 removed
''')
hgt.asserttrue(os.path.exists('.kbf'), 'bfile standins should exist')
|
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test that kbfconvert handles tags properly
@@ -161,27 +161,27 @@
''')
hgt.hg(['up', '-r', '0'], stdout='''6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
hgt.assertfalse(os.path.exists('.hgtags'), "hgtags doesn't match")
hgt.hg(['up', '-r', '1'], stdout='''6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
4 big files updated, 0 removed
''')
hgt.assertfalse(os.path.exists('.hgtags'), "hgtags doesn't match")
hgt.hg(['up', '-r', '2'], stdout='''1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('.hgtags') == '494d68993338ddb5b7fd854396a003be5ed72755 first\n', "hgtags doesn't match")
hgt.hg(['up', '-r', '3'], stdout='''1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('.hgtags') == '494d68993338ddb5b7fd854396a003be5ed72755 first\na633211558b85df9a4e0c18c0777284421721158 second\n', "hgtags doesn't match")
hgt.hg(['up', '-r', '4'], stdout='''1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
0 big files updated, 0 removed
''')
hgt.asserttrue(hgt.readfile('.hgtags') == '494d68993338ddb5b7fd854396a003be5ed72755 first\na633211558b85df9a4e0c18c0777284421721158 second\n3c50e5db999358097d2b8602f50b2acda3886bc9 last\n', "hgtags doesn't match")
@@ -252,3 +252,78 @@hgt.asserttrue(hgt.readfile('.hgtags') == 'd82117283c29e97adb8ebbcc5ea8fb7613ad0864 first\n73960f5ccfe2ca2f74002e55d74f186678f53872 second\n', "hgtags doesn't match")
hgt.hg(['up', '-r', '4'], stdout='1 files updated, 0 files merged, 0 files removed, 0 files unresolved\n')
hgt.asserttrue(hgt.readfile('.hgtags') == 'd82117283c29e97adb8ebbcc5ea8fb7613ad0864 first\n73960f5ccfe2ca2f74002e55d74f186678f53872 second\ne229b8d1bac18cbd3eef20f9433c076fe45fa97d last\n', "hgtags doesn't match")
+os.chdir('..')
+hgt.hg(['tag', '-R', 'repo3', 'fromroot'])
+hgt.hg(['log', '-R', 'repo3'], stdout='''changeset: 5:d9771069dce1
+tag: tip
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag fromroot for changeset c4495ce62a60
+
+changeset: 4:c4495ce62a60
+tag: fromroot
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag last for changeset e229b8d1bac1
+
+changeset: 3:e229b8d1bac1
+tag: last
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag second for changeset 73960f5ccfe2
+
+changeset: 2:d41643b333a9
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag first for changeset d82117283c29
+
+changeset: 1:73960f5ccfe2
+tag: second
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: add more files
+
+changeset: 0:d82117283c29
+tag: first
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: initial commit
+
+''')
+hgt.hg(['tag', '-R', 'repo2', 'fromroot'])
+hgt.hg(['log', '-R', 'repo2'], stdout='''changeset: 5:e861e23e4324
+tag: tip
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag fromroot for changeset d6940222c000
+
+changeset: 4:d6940222c000
+tag: fromroot
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag last for changeset e229b8d1bac1
+
+changeset: 3:3c50e5db9993
+tag: last
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag second for changeset 73960f5ccfe2
+
+changeset: 2:4a283e03a784
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: Added tag first for changeset d82117283c29
+
+changeset: 1:a633211558b8
+tag: second
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: add more files
+
+changeset: 0:494d68993338
+tag: first
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: initial commit
+
+''')
|
@@ -31,3 +31,7 @@ hg up -r 2
hg up -r 3
hg up -r 4
+hg tag -R repo3 fromroot
+hg log -R repo3
+hg tag -R repo2 fromroot
+hg log -R repo2
|
|
|
- #!/usr/bin/python
+#!/usr/bin/env python
# Test copy and rename
import os
import common
hgt = common.BfilesTester()
def checkfile(file, contents):
hgt.asserttrue(hgt.readfile(file) == contents, 'file contents dont match')
# add size and patterns for adding as bfiles
hgt.updaterc()
hgt.announce('setup')
os.mkdir('repo1')
os.chdir('repo1')
hgt.hg(['init', '-q'])
hgt.writefile('normal1', 'n1')
hgt.writefile('normal2', 'n2')
hgt.writefile('normal3.txt', 'n3')
hgt.writefile('normal4.txt', 'n4')
hgt.hg(['add', 'normal1', 'normal2', 'normal3.txt', 'normal4.txt'])
hgt.writefile('big1', 'b1')
hgt.writefile('big2', 'b2')
hgt.writefile('big3.txt', 'b3')
hgt.writefile('big4.txt', 'b4')
hgt.hg(['add', '--bf', 'big1', 'big2', 'big3.txt', 'big4.txt'])
hgt.hg(['commit', '-m', 'added files'])
hgt.announce('copy all to directory')
os.mkdir('dir')
hgt.hg(['copy', 'glob:*', 'dir'],
stdout=('copying normal1 to dir/normal1\n'
'copying normal2 to dir/normal2\n'
'copying normal3.txt to dir/normal3.txt\n'
'copying normal4.txt to dir/normal4.txt\n'
'copying .kbf/big1 to .kbf/dir/big1\n'
'copying .kbf/big2 to .kbf/dir/big2\n'
'copying .kbf/big3.txt to .kbf/dir/big3.txt\n'
'copying .kbf/big4.txt to .kbf/dir/big4.txt\n'))
checkfile('dir/normal1', 'n1')
checkfile('dir/normal2', 'n2')
checkfile('dir/normal3.txt', 'n3')
checkfile('dir/normal4.txt', 'n4')
checkfile('dir/big1', 'b1')
checkfile('dir/big2', 'b2')
checkfile('dir/big3.txt', 'b3')
checkfile('dir/big4.txt', 'b4')
hgt.hg(['status'],
stdout=('A dir/big1\n'
'A dir/big2\n'
'A dir/big3.txt\n'
'A dir/big4.txt\n'
'A dir/normal1\n'
'A dir/normal2\n'
'A dir/normal3.txt\n'
'A dir/normal4.txt\n'))
hgt.hg(['commit', '-m', 'added copies'])
hgt.hg(['status'])
hgt.announce('copy some to directory')
os.mkdir('dir2')
hgt.hg(['copy', 'glob:*.txt', 'dir2'],
stdout=('copying normal3.txt to dir2/normal3.txt\n'
'copying normal4.txt to dir2/normal4.txt\n'
'copying .kbf/big3.txt to .kbf/dir2/big3.txt\n'
'copying .kbf/big4.txt to .kbf/dir2/big4.txt\n'))
checkfile('dir2/normal3.txt', 'n3')
checkfile('dir2/normal4.txt', 'n4')
checkfile('dir2/big3.txt', 'b3')
checkfile('dir2/big4.txt', 'b4')
hgt.assertfalse(os.path.exists('dir2/normal1'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir2/normal2'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir2/big1'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir2/big2'), 'file should not exist')
hgt.hg(['status'],
stdout=('A dir2/big3.txt\n'
'A dir2/big4.txt\n'
'A dir2/normal3.txt\n'
'A dir2/normal4.txt\n'))
hgt.hg(['commit', '-m', 'added some'])
hgt.hg(['status'])
hgt.announce('rewrite root files and copy all to dir2')
hgt.writefile('normal1', 'n11')
hgt.writefile('normal2', 'n22')
hgt.writefile('normal3.txt', 'n33')
hgt.writefile('normal4.txt', 'n44')
hgt.writefile('big1', 'b11')
hgt.writefile('big2', 'b22')
hgt.writefile('big3.txt', 'b33')
hgt.writefile('big4.txt', 'b44')
hgt.hg(['commit', '-m', 'edit'])
hgt.hg(['copy', 'glob:*', 'dir2'],
stdout=('copying normal1 to dir2/normal1\n'
'copying normal2 to dir2/normal2\n'
'copying .kbf/big1 to .kbf/dir2/big1\n'
'copying .kbf/big2 to .kbf/dir2/big2\n'),
stderr=('dir2/normal3.txt: not overwriting - file exists\n'
'dir2/normal4.txt: not overwriting - file exists\n'
'.kbf/dir2/big3.txt: not overwriting - file exists\n'
'.kbf/dir2/big4.txt: not overwriting - file exists\n'))
hgt.hg(['status'],
stdout=('A dir2/big1\n'
'A dir2/big2\n'
'A dir2/normal1\n'
'A dir2/normal2\n'))
hgt.hg(['commit', '-m', 'copy again'])
hgt.hg(['status'])
checkfile('dir2/normal1', 'n11')
checkfile('dir2/normal2', 'n22')
checkfile('dir2/normal3.txt', 'n3')
checkfile('dir2/normal4.txt', 'n4')
checkfile('dir2/big1', 'b11')
checkfile('dir2/big2', 'b22')
checkfile('dir2/big3.txt', 'b3')
checkfile('dir2/big4.txt', 'b4')
checkfile('normal1', 'n11')
checkfile('normal2', 'n22')
checkfile('normal3.txt', 'n33')
checkfile('normal4.txt', 'n44')
checkfile('big1', 'b11')
checkfile('big2', 'b22')
checkfile('big3.txt', 'b33')
checkfile('big4.txt', 'b44')
hgt.announce('copy files by name to dir3')
os.mkdir('dir3')
hgt.hg(['copy', 'normal1', 'normal3.txt', 'big1', 'big3.txt', 'dir3'])
hgt.hg(['status'],
stdout=('A dir3/big1\n'
'A dir3/big3.txt\n'
'A dir3/normal1\n'
'A dir3/normal3.txt\n'))
hgt.hg(['commit', '-m', 'copy individual'])
hgt.hg(['status'])
checkfile('dir3/normal1', 'n11')
checkfile('dir3/normal3.txt', 'n33')
checkfile('dir3/big1', 'b11')
checkfile('dir3/big3.txt', 'b33')
hgt.assertfalse(os.path.exists('dir3/normal2'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir3/normal4.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir3/big2'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir3/big4.txt'), 'file should not exist')
hgt.announce('rename some files to dir4')
os.mkdir('dir4')
hgt.hg(['rename', 'glob:*.txt', 'dir4'],
stdout=('moving normal3.txt to dir4/normal3.txt\n'
'moving normal4.txt to dir4/normal4.txt\n'
'moving .kbf/big3.txt to .kbf/dir4/big3.txt\n'
'moving .kbf/big4.txt to .kbf/dir4/big4.txt\n'))
hgt.hg(['status'],
stdout=('A dir4/big3.txt\n'
'A dir4/big4.txt\n'
'A dir4/normal3.txt\n'
'A dir4/normal4.txt\n'
'R big3.txt\n'
'R big4.txt\n'
'R normal3.txt\n'
'R normal4.txt\n'))
checkfile('dir4/normal3.txt', 'n33')
checkfile('dir4/normal4.txt', 'n44')
checkfile('dir4/big3.txt', 'b33')
checkfile('dir4/big4.txt', 'b44')
hgt.assertfalse(os.path.exists('dir4/normal1'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir4/normal2'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir4/big1'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir4/big2'), 'file should not exist')
hgt.assertfalse(os.path.exists('normal3.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('normal4.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('big3.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('big4.txt'), 'file should not exist')
hgt.announce('rename remaining files to dir5')
os.mkdir('dir5')
hgt.hg(['rename', 'glob:*', 'dir5'],
stdout=('moving normal1 to dir5/normal1\n'
'moving normal2 to dir5/normal2\n'
'moving .kbf/big1 to .kbf/dir5/big1\n'
'moving .kbf/big2 to .kbf/dir5/big2\n'))
hgt.hg(['status'],
stdout=('A dir4/big3.txt\n'
'A dir4/big4.txt\n'
'A dir4/normal3.txt\n'
'A dir4/normal4.txt\n'
'A dir5/big1\n'
'A dir5/big2\n'
'A dir5/normal1\n'
'A dir5/normal2\n'
'R big1\n'
'R big2\n'
'R big3.txt\n'
'R big4.txt\n'
'R normal1\n'
'R normal2\n'
'R normal3.txt\n'
'R normal4.txt\n'))
hgt.hg(['commit', '-m', 'rename to dir5'])
hgt.hg(['status'])
checkfile('dir5/normal1', 'n11')
checkfile('dir5/normal2', 'n22')
checkfile('dir5/big1', 'b11')
checkfile('dir5/big2', 'b22')
hgt.assertfalse(os.path.exists('dir5/normal3.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir5/normal4.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir5/big3.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('dir5/big4.txt'), 'file should not exist')
hgt.assertfalse(os.path.exists('normal1'), 'file should not exist')
hgt.assertfalse(os.path.exists('normal2'), 'file should not exist')
hgt.assertfalse(os.path.exists('big1'), 'file should not exist')
hgt.assertfalse(os.path.exists('big2'), 'file should not exist')
hgt.announce('big copy')
os.mkdir('bdir1')
hgt.hg(['copy', 'dir', 'dir2', 'bdir1'],
stdout=('copying dir/normal1 to bdir1/dir/normal1\n'
'copying dir/normal2 to bdir1/dir/normal2\n'
'copying dir/normal3.txt to bdir1/dir/normal3.txt\n'
'copying dir/normal4.txt to bdir1/dir/normal4.txt\n'
'copying dir2/normal1 to bdir1/dir2/normal1\n'
'copying dir2/normal2 to bdir1/dir2/normal2\n'
'copying dir2/normal3.txt to bdir1/dir2/normal3.txt\n'
'copying dir2/normal4.txt to bdir1/dir2/normal4.txt\n'
'copying .kbf/dir/big1 to .kbf/bdir1/dir/big1\n'
'copying .kbf/dir/big2 to .kbf/bdir1/dir/big2\n'
'copying .kbf/dir/big3.txt to .kbf/bdir1/dir/big3.txt\n'
'copying .kbf/dir/big4.txt to .kbf/bdir1/dir/big4.txt\n'
'copying .kbf/dir2/big1 to .kbf/bdir1/dir2/big1\n'
'copying .kbf/dir2/big2 to .kbf/bdir1/dir2/big2\n'
'copying .kbf/dir2/big3.txt to .kbf/bdir1/dir2/big3.txt\n'
'copying .kbf/dir2/big4.txt to .kbf/bdir1/dir2/big4.txt\n'))
hgt.hg(['status'],
stdout=('A bdir1/dir/big1\n'
'A bdir1/dir/big2\n'
'A bdir1/dir/big3.txt\n'
'A bdir1/dir/big4.txt\n'
'A bdir1/dir/normal1\n'
'A bdir1/dir/normal2\n'
'A bdir1/dir/normal3.txt\n'
'A bdir1/dir/normal4.txt\n'
'A bdir1/dir2/big1\n'
'A bdir1/dir2/big2\n'
'A bdir1/dir2/big3.txt\n'
'A bdir1/dir2/big4.txt\n'
'A bdir1/dir2/normal1\n'
'A bdir1/dir2/normal2\n'
'A bdir1/dir2/normal3.txt\n'
'A bdir1/dir2/normal4.txt\n'))
hgt.hg(['commit', '-m', 'big copy1'])
hgt.hg(['status'])
hgt.announce('big rename')
os.mkdir('bdir2')
os.mkdir('bdir2/dir')
os.chdir('bdir2')
hgt.hg(['copy', '../dir3', '../dir4', '../dir5', 'dir'],
stdout=('copying ../dir3/normal1 to dir/dir3/normal1\n'
'copying ../dir3/normal3.txt to dir/dir3/normal3.txt\n'
'copying ../dir4/normal3.txt to dir/dir4/normal3.txt\n'
'copying ../dir4/normal4.txt to dir/dir4/normal4.txt\n'
'copying ../dir5/normal1 to dir/dir5/normal1\n'
'copying ../dir5/normal2 to dir/dir5/normal2\n'
'copying ../.kbf/dir3/big1 to ../.kbf/bdir2/dir/dir3/big1\n'
'copying ../.kbf/dir3/big3.txt to ../.kbf/bdir2/dir/dir3/big3.txt\n'
'copying ../.kbf/dir4/big3.txt to ../.kbf/bdir2/dir/dir4/big3.txt\n'
'copying ../.kbf/dir4/big4.txt to ../.kbf/bdir2/dir/dir4/big4.txt\n'
'copying ../.kbf/dir5/big1 to ../.kbf/bdir2/dir/dir5/big1\n'
'copying ../.kbf/dir5/big2 to ../.kbf/bdir2/dir/dir5/big2\n'))
hgt.hg(['status'],
stdout=('A bdir2/dir/dir3/big1\n'
'A bdir2/dir/dir3/big3.txt\n'
'A bdir2/dir/dir3/normal1\n'
'A bdir2/dir/dir3/normal3.txt\n'
'A bdir2/dir/dir4/big3.txt\n'
'A bdir2/dir/dir4/big4.txt\n'
'A bdir2/dir/dir4/normal3.txt\n'
'A bdir2/dir/dir4/normal4.txt\n'
'A bdir2/dir/dir5/big1\n'
'A bdir2/dir/dir5/big2\n'
'A bdir2/dir/dir5/normal1\n'
'A bdir2/dir/dir5/normal2\n'))
hgt.hg(['commit', '-m', 'big copy2'])
hgt.hg(['status', '-A'],
stdout='''C bdir1/dir/big1
C bdir1/dir/big2
C bdir1/dir/big3.txt
C bdir1/dir/big4.txt
C bdir1/dir/normal1
C bdir1/dir/normal2
C bdir1/dir/normal3.txt
C bdir1/dir/normal4.txt
C bdir1/dir2/big1
C bdir1/dir2/big2
C bdir1/dir2/big3.txt
C bdir1/dir2/big4.txt
C bdir1/dir2/normal1
C bdir1/dir2/normal2
C bdir1/dir2/normal3.txt
C bdir1/dir2/normal4.txt
C bdir2/dir/dir3/big1
C bdir2/dir/dir3/big3.txt
C bdir2/dir/dir3/normal1
C bdir2/dir/dir3/normal3.txt
C bdir2/dir/dir4/big3.txt
C bdir2/dir/dir4/big4.txt
C bdir2/dir/dir4/normal3.txt
C bdir2/dir/dir4/normal4.txt
C bdir2/dir/dir5/big1
C bdir2/dir/dir5/big2
C bdir2/dir/dir5/normal1
C bdir2/dir/dir5/normal2
C dir/big1
C dir/big2
C dir/big3.txt
C dir/big4.txt
C dir/normal1
C dir/normal2
C dir/normal3.txt
C dir/normal4.txt
C dir2/big1
C dir2/big2
C dir2/big3.txt
C dir2/big4.txt
C dir2/normal1
C dir2/normal2
C dir2/normal3.txt
C dir2/normal4.txt
C dir3/big1
C dir3/big3.txt
C dir3/normal1
C dir3/normal3.txt
C dir4/big3.txt
C dir4/big4.txt
C dir4/normal3.txt
C dir4/normal4.txt
C dir5/big1
C dir5/big2
C dir5/normal1
C dir5/normal2
''')
hgt.announce('single copy')
hgt.writefile('foo', 'stuff')
hgt.hg(['add', 'foo'])
hgt.hg(['commit', '-m', 'added foo'])
hgt.hg(['cp', 'foo', 'bar'])
hgt.announce('single copy2')
hgt.writefile('foo2', 'stuff')
hgt.hg(['add', '--bf', 'foo2'])
hgt.hg(['commit', '-m', 'added foo2'])
hgt.hg(['cp', 'foo2', 'bar2'])
hgt.announce('relative rename')
os.chdir('..')
os.mkdir('repo2')
os.chdir('repo2')
hgt.hg(['init'])
os.mkdir('a')
os.mkdir('dest')
os.chdir('a')
os.mkdir('b')
os.mkdir('c')
os.mkdir('b/b')
hgt.writefile('n1', 'n1')
hgt.writefile('b/n2', 'n2')
hgt.writefile('c/n3', 'n3')
hgt.writefile('b/b/n4', 'n4')
hgt.hg(['add'],
stdout='''adding b/b/n4
adding b/n2
adding c/n3
adding n1
''')
hgt.writefile('b1', 'b1')
hgt.writefile('b/b2', 'b2')
hgt.writefile('c/b3', 'b3')
hgt.writefile('b/b/b4', 'b4')
hgt.hg(['add', '--bf'],
stdout='''adding b/b/b4 as bfile
adding b/b2 as bfile
adding b1 as bfile
adding c/b3 as bfile
''')
hgt.hg(['commit', '-m', 'add files'])
hgt.hg(['rename', '.', '../dest'],
stdout='''moving b/b/n4 to ../dest/a/b/b/n4
moving b/n2 to ../dest/a/b/n2
moving c/n3 to ../dest/a/c/n3
moving n1 to ../dest/a/n1
moving ../.kbf/a/b/b/b4 to ../.kbf/dest/a/b/b/b4
moving ../.kbf/a/b/b2 to ../.kbf/dest/a/b/b2
moving ../.kbf/a/b1 to ../.kbf/dest/a/b1
moving ../.kbf/a/c/b3 to ../.kbf/dest/a/c/b3
''')
hgt.hg(['status'],
stdout='''A dest/a/b/b/b4
A dest/a/b/b/n4
A dest/a/b/b2
A dest/a/b/n2
A dest/a/b1
A dest/a/c/b3
A dest/a/c/n3
A dest/a/n1
R a/b/b/b4
R a/b/b/n4
R a/b/b2
R a/b/n2
R a/b1
R a/c/b3
R a/c/n3
R a/n1
''')
hgt.announce('relative rename without bfiles')
os.chdir('..')
os.mkdir('repo2')
os.chdir('repo2')
hgt.hg(['init'])
os.mkdir('a')
os.mkdir('dest')
os.chdir('a')
os.mkdir('b')
os.mkdir('c')
os.mkdir('b/b')
hgt.writefile('n1', 'n1')
hgt.writefile('b/n2', 'n2')
hgt.writefile('c/n3', 'n3')
hgt.writefile('b/b/n4', 'n4')
hgt.hg(['add'],
stdout='''adding b/b/n4
adding b/n2
adding c/n3
adding n1
''')
hgt.hg(['commit', '-m', 'add files'])
hgt.hg(['rename', '.', '../dest'],
stdout='''moving b/b/n4 to ../dest/a/b/b/n4
moving b/n2 to ../dest/a/b/n2
moving c/n3 to ../dest/a/c/n3
moving n1 to ../dest/a/n1
''')
os.chdir('..')
hgt.hg(['status'],
stdout='''A dest/a/b/b/n4
A dest/a/b/n2
A dest/a/c/n3
A dest/a/n1
R a/b/b/n4
R a/b/n2
R a/c/n3
R a/n1
''')
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test that edited bfiles show up as modified
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Test the fetch extension. Always give it a specific message because the message
# it automatically adds includes the path which is randomly generated.
@@ -28,7 +28,7 @@hgt.hg(['clone', 'repo1', 'repo2'],
stdout='''updating to branch default
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
os.chdir('repo1')
@@ -47,7 +47,7 @@adding file changes
added 1 changesets with 2 changes to 2 files
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
''')
hgt.hg(['mv', 'dir/n2', 'n2'])
@@ -66,13 +66,13 @@added 1 changesets with 2 changes to 2 files (+1 heads)
updating to 3:04650d35496d
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 1 removed
merging with 2:6db24b20137f
merging b2 and dir/b2 to b2
merging n2 and dir/n2 to n2
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
new changeset 4:dacf855d6b8a merges remote changes with local
''')
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test remove
@@ -56,7 +56,7 @@hgt.announce('test update')
hgt.hg(['up', '-r', '1'],
stdout=('3 files updated, 0 files merged, 0 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'1 big files updated, 0 removed\n'))
hgt.asserttrue(os.path.exists('sub/normal3.txt'), 'added file doesnt exist')
hgt.asserttrue(os.path.exists('sub/normal4.txt'), 'added file doesnt exist')
@@ -67,7 +67,7 @@hgt.asserttrue(os.path.exists('sub/big2'), 'added file doesnt exist')
hgt.hg(['up'],
stdout=('0 files updated, 0 files merged, 3 files removed, 0 files unresolved\n'
- 'Getting changed bfiles\n'
+ 'getting changed bfiles\n'
'0 big files updated, 1 removed\n'))
hgt.assertfalse(os.path.exists('sub/normal3.txt'), 'removed file exists')
hgt.assertfalse(os.path.exists('sub/normal4.txt'), 'removed file exists')
|
|
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Test basic kiln interaction
@@ -43,7 +43,7 @@''')
hgt.hg(['commit', '-m', 'add files'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 0:da6857b8d2bf
tag: tip
@@ -70,13 +70,13 @@kbfiles: 4 to upload
''')
hgt.hg(['push'],
- stdout='''pushing to %s/Repo/Test/Test/test
+ stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
searching for changes
remote: kiln: successfully pushed one changeset
''' % kilntest.KILNURL)
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
searching for changes
@@ -92,17 +92,17 @@added 1 changesets with 8 changes to 8 files
updating to branch default
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
4 big files updated, 0 removed
''')
os.chdir('repo2')
hgt.hg(['in'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
''' % kilntest.KILNURL, status=1)
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
searching for changes
@@ -112,7 +112,7 @@hgt.writefile('b4', 'b44')
hgt.hg(['commit', '-m', 'edit n4 and b4'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 1:8499483c24d0
tag: tip
@@ -126,14 +126,14 @@
''' % kilntest.KILNURL)
hgt.hg(['push'],
- stdout='''pushing to %s/Repo/Test/Test/test
+ stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
searching for changes
remote: kiln: successfully pushed one changeset
''' % kilntest.KILNURL)
os.chdir('../repo1')
hgt.hg(['in'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 1:8499483c24d0
tag: tip
@@ -143,14 +143,14 @@
''' % kilntest.KILNURL)
hgt.hg(['out'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
''' % kilntest.KILNURL)
hgt.hg(['mv', 'n4', 'b4', 'a'])
hgt.hg(['commit', '-m', 'move n4 and b4'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 1:6b693340d9c6
tag: tip
@@ -167,7 +167,7 @@# to stderr at some version after Mercurial 1.6. Just don't check stdout/stderr.
hgt.hg(['push'], stdout=hgtest.ANYTHING, stderr=hgtest.ANYTHING, status=[1, 255])
hgt.hg(['pull'],
- stdout='''pulling from %s/Repo/Test/Test/test
+ stdout='''pulling from %s/Repo/Test/Test/Test
searching for changes
adding changesets
adding manifests
@@ -180,12 +180,12 @@merging a/n4 and n4 to a/n4
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
''')
hgt.hg(['commit', '-m', 'merge'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 1:6b693340d9c6
user: test
@@ -215,20 +215,20 @@searching for changes
kbfiles: 1 to upload
''')
-hgt.hg(['push'], stdout='''pushing to %s/Repo/Test/Test/test
+hgt.hg(['push'], stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
searching for changes
remote: kiln: successfully pushed 2 changesets
''' % kilntest.KILNURL)
os.chdir('../repo2')
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
searching for changes
kbfiles: No remote repo
''' % kilntest.KILNURL)
-hgt.hg(['in'], stdout='''comparing with %s/Repo/Test/Test/test
+hgt.hg(['in'], stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 2:6b693340d9c6
parent: 0:da6857b8d2bf
@@ -245,7 +245,7 @@summary: merge
''' % kilntest.KILNURL)
-hgt.hg(['pull'], stdout='''pulling from %s/Repo/Test/Test/test
+hgt.hg(['pull'], stdout='''pulling from %s/Repo/Test/Test/Test
searching for changes
adding changesets
adding manifests
@@ -254,13 +254,13 @@(run 'hg update' to get a working copy)
''' % kilntest.KILNURL)
hgt.hg(['in'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
no changes found
''' % kilntest.KILNURL, status=1)
hgt.hg(['up'],
stdout='''2 files updated, 0 files merged, 2 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 1 removed
''')
os.chdir('..')
@@ -270,7 +270,7 @@hgt.writefile('a/b1', 'b11')
hgt.hg(['commit', '-m', 'edit n1 and b1'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 4:fdb0cdc62a97
tag: tip
@@ -295,14 +295,14 @@''')
hgt.hg(['up'],
stdout='''2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
1 big files updated, 0 removed
''')
hgt.writefile('a/b/n2', 'n22')
hgt.writefile('a/b/b2', 'b22')
hgt.hg(['commit', '-m', 'edit n22 and b22'])
hgt.hg(['out', '--bf'],
- stdout='''comparing with %s/Repo/Test/Test/test
+ stdout='''comparing with %s/Repo/Test/Test/Test
searching for changes
changeset: 4:fdb0cdc62a97
user: test
@@ -332,14 +332,14 @@kbfiles: 2 to upload
''')
hgt.hg(['push'],
- stdout='''pushing to %s/Repo/Test/Test/test
+ stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
searching for changes
remote: kiln: successfully pushed 2 changesets
''' % kilntest.KILNURL)
os.chdir('../repo2')
hgt.hg(['pull'],
- stdout='''pulling from %s/Repo/Test/Test/test
+ stdout='''pulling from %s/Repo/Test/Test/Test
searching for changes
adding changesets
adding manifests
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Test basic kiln interaction
@@ -43,7 +43,7 @@''')
hgt.hg(['commit', '-m', 'add files'])
hgt.hg(['push'],
- stdout='''pushing to %s/Repo/Test/Test/test
+ stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
searching for changes
remote: kiln: successfully pushed one changeset
@@ -62,7 +62,7 @@ stdout='requesting all changes\n', log=False,
stderr='abort: HTTP Error 400: To access this repository, install the kiln-bfiles extension from %s/Tools\n' % kilntest.KILNURL, status=255)
os.chdir('repo1')
-hgt.hg(['push'], stdout='''pushing to %s/Repo/Test/Test/test
+hgt.hg(['push'], stdout='''pushing to %s/Repo/Test/Test/Test
searching for changes
remote: ERROR: Big file a/b1 at revision 1 has not been uploaded to the kiln server.
remote: ERROR: All big files must be uploaded to the kiln server before the repository is changed.
|
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
|
@@ -0,0 +1,15 @@ + % setup
+hg init
+hg add n1
+hg commit -m 'add file'
+hg add --bf b1
+hg commit -m 'add bfile'
+hg commit -m 'modify file'
+hg commit -m 'modify bfile'
+hg rm n1
+hg commit -m 'remove file'
+hg rm b1
+hg commit -m 'remove bfile'
+hg log -v
+hg log -p
+hg log --stat
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
#
# Test summary
@@ -27,7 +27,7 @@hgt.hg(['clone', 'repo1', 'repo2'],
stdout='''updating to branch default
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
2 big files updated, 0 removed
''')
os.chdir('repo2')
@@ -38,8 +38,12 @@
hgt.announce('outgoing')
os.chdir('repo1')
-hgt.hg(['out'], status=255, stderr='abort: repository default-push not found!\n')
-hgt.hg(['out', '--bf'], status=255, stderr='abort: repository default-push not found!\n')
+if common.version >= (1, 8, 0):
+ hgt.hg(['out'], status=255, stdout='comparing with default-push\n', stderr='abort: repository default-push not found!\n')
+ hgt.hg(['out', '--bf'], status=255, stdout='comparing with default-push\n', stderr='abort: repository default-push not found!\n')
+else:
+ hgt.hg(['out'], status=255, stderr='abort: repository default-push not found!\n')
+ hgt.hg(['out', '--bf'], status=255, stderr='abort: repository default-push not found!\n')
os.chdir('../repo2')
hgt.hg(['out'],
stdout='''comparing with $HGTMP/test-outgoing.py/repo1
|
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test various tricky bfadd corner cases.
@@ -116,14 +116,14 @@
if windows:
hgt.hg(['backout', '-r', '2'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
reverting foo/dir/n3
changeset 3:8abd5724a95c backs out changeset 2:df964af3433e
''')
else:
hgt.hg(['backout', '-r', '2'],
- stdout='''Getting changed bfiles
+ stdout='''getting changed bfiles
0 big files updated, 0 removed
reverting .kbf/b1
reverting .kbf/foo/b2
@@ -157,7 +157,7 @@hgt.hg(['clone', 'repo1', 'repo2'],
stdout='''updating to branch default
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-Getting changed bfiles
+getting changed bfiles
3 big files updated, 0 removed
''')
common.checkrepos(hgt, 'repo1', 'repo2', [0, 1, 2, 3])
|
|
@@ -0,0 +1,37 @@ + #!/usr/bin/env python
+
+# Test hg purge
+
+import os
+import common
+
+hgt = common.BfilesTester()
+
+hgt.updaterc({'extensions': [('purge', '')]})
+hgt.announce('setup')
+os.mkdir('repo1')
+os.chdir('repo1')
+hgt.hg(['init'])
+hgt.writefile('b1', 'b1')
+hgt.writefile('n1', 'n1')
+hgt.writefile('n2', 'n2')
+hgt.hg(['add', '--bf', 'b1'])
+hgt.hg(['add', 'n1'])
+hgt.hg(['commit', '-m', 'add some files'])
+hgt.hg(['purge'])
+hgt.asserttrue(os.path.exists('b1'), 'missing b1')
+hgt.asserttrue(hgt.readfile('b1') == 'b1', 'wrong file contents')
+hgt.writefile('b2', 'b2')
+hgt.hg(['purge'])
+hgt.assertfalse(os.path.exists('b2'), 'failed to purge b2')
+hgt.writefile('b2', 'b2')
+hgt.hg(['add', '--bf', 'b2'])
+hgt.hg(['purge'])
+hgt.asserttrue(os.path.exists('b2'), 'missing b2')
+hgt.asserttrue(hgt.readfile('b2') == 'b2', 'wrong file contents')
+hgt.hg(['commit', '-m', 'add another bfile'])
+hgt.writefile('b2', 'b22')
+hgt.hg(['purge'])
+hgt.asserttrue(os.path.exists('b2'), 'missing b2')
+hgt.asserttrue(hgt.readfile('b2') == 'b22', 'wrong file contents')
+os.chdir('..')
|
|
@@ -0,0 +1,11 @@ + % setup
+hg init
+hg add --bf b1
+hg add n1
+hg commit -m 'add some files'
+hg purge
+hg purge
+hg add --bf b2
+hg purge
+hg commit -m 'add another bfile'
+hg purge
|
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
@@ -1,4 +1,4 @@ - #!/usr/bin/python
+#!/usr/bin/env python
# Test that bfiles does not conflict with other extensions
# (e.g. bookmarks) that override localrepository.commit().
|
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
@@ -23,3 +23,15 @@ hg status
hg revert -r 0 n2.txt b2.txt
hg status
+hg init -q
+hg add n1
+hg commit -m 'added normal file'
+hg add --bf b1
+hg commit -m 'added bfile'
+hg revert n1
+hg init -q
+hg add --bf b1
+hg commit -m 'added first bfile'
+hg add --bf b2
+hg commit -m 'added second bfile'
+hg revert b1
|
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
Loading...