##// END OF EJS Templates
branch: allow changing branch name to existing name if possible...
branch: allow changing branch name to existing name if possible With the functionality added in previous patch we can change branches of a revision but not everytime even if it's possible to do so. For example cosider the following case: o 3 added a (foo) o 2 added b (foo) o 1 added c (bar) o 0 added d (bar) Here if I want to change the branch of rev 2,3 to bar, it was not possible and it will say, "a branch with same name exists". This patch allows us to change branch of 2,3 to bar. The underlying logic for changing branch finds the changesets from the revs passed which have no parents in revs. We only support revsets which have only one such root, so to support this we check whether the parent of the root has the same name as that of the new name and if so, we can use the new name to change branches. Differential Revision: https://phab.mercurial-scm.org/D1913

File last commit:

r32506:2dcb3d52 default
r35764:e5b6ba78 default
Show More
mpatchbuild.py
35 lines | 1.0 KiB | text/x-python | PythonLexer
Yuya Nishihara
cffi: rename build scripts...
r32505 from __future__ import absolute_import
import cffi
import os
ffi = cffi.FFI()
mpatch_c = os.path.join(os.path.join(os.path.dirname(__file__), '..',
'mpatch.c'))
Yuya Nishihara
cffi: put compiled modules into mercurial.cffi package...
r32506 ffi.set_source("mercurial.cffi._mpatch", open(mpatch_c).read(),
Yuya Nishihara
cffi: rename build scripts...
r32505 include_dirs=["mercurial"])
ffi.cdef("""
struct mpatch_frag {
int start, end, len;
const char *data;
};
struct mpatch_flist {
struct mpatch_frag *base, *head, *tail;
};
extern "Python" struct mpatch_flist* cffi_get_next_item(void*, ssize_t);
int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res);
ssize_t mpatch_calcsize(size_t len, struct mpatch_flist *l);
void mpatch_lfree(struct mpatch_flist *a);
static int mpatch_apply(char *buf, const char *orig, size_t len,
struct mpatch_flist *l);
struct mpatch_flist *mpatch_fold(void *bins,
struct mpatch_flist* (*get_next_item)(void*, ssize_t),
ssize_t start, ssize_t end);
""")
if __name__ == '__main__':
ffi.compile()