'ensure that an args-joined path exists (by default as
a file). If you specify a keyword argument \'dir=True\'
then the path is forced to be a directory path.'

def ensure(self, *args, **kwargs):

    if (getattr(self, 'rev', None) is not None):
        raise py.error.EINVAL(self, 'revisions    are    immutable')
    target = self.join(*args)
    dir = kwargs.get('dir', 0)
    for x in target.parts(reverse=True):
        if x.check():
            break
    else:
        raise py.error.ENOENT(target, 'has    not    any    valid    base!')
    if (x == target):
        if (not x.check(dir=dir)):
            raise ((dir and py.error.ENOTDIR(x)) or py.error.EISDIR(x))
        return x
    tocreate = target.relto(x)
    basename = tocreate.split(self.sep, 1)[0]
    tempdir = py.path.local.mkdtemp()
    try:
        tempdir.ensure(tocreate, dir=dir)
        cmd = ('svn    import    -m    "%s"    "%s"    "%s"' % (('ensure    %s' % self._escape(tocreate)), self._escape(tempdir.join(basename)), x.join(basename)._encodedurl()))
        self._svncmdexecauth(cmd)
        self._norev_delentry(x)
    finally:
        tempdir.remove()
    return target
