def setUp(self): os.environ["XDG_CACHE_HOME"] = tempfile.mkdtemp(prefix="gs_cache") self.repo_dir = tempfile.mkdtemp(prefix="gs_repo") self.repo = pygit2.init_repository(self.repo_dir) author = pygit2.Signature('Alice Author', '*****@*****.**') committer = pygit2.Signature('Cecil Committer', '*****@*****.**') tree = self.repo.TreeBuilder().write() parent = [] self.commits = [] for i in range(3): subject = "commit %d" % (i,) cid = self.repo.create_commit( "refs/heads/master", author, committer, "%s\n\nlog" % (subject,), tree, parent ) parent = [cid] self.commits.append(str(cid)) self.index = git_sort.SortIndex(self.repo)
def setUp(self): os.environ["XDG_CACHE_HOME"] = tempfile.mkdtemp(prefix="gs_cache") # setup stub linux repository os.environ["LINUX_GIT"] = tempfile.mkdtemp(prefix="gs_repo") self.repo = pygit2.init_repository(os.environ["LINUX_GIT"]) author = pygit2.Signature('Alice Author', '*****@*****.**') committer = pygit2.Signature('Cecil Committer', '*****@*****.**') tree = self.repo.TreeBuilder().write() m0 = self.repo.create_commit("refs/heads/mainline", author, committer, "mainline 0\n\nlog", tree, []) n0 = self.repo.create_commit("refs/heads/net", author, committer, "net 0\n\nlog", tree, [m0]) self.repo.checkout("refs/heads/mainline") m1 = self.repo.create_commit("refs/heads/mainline", author, committer, "mainline 1, merge net\n\nlog", tree, [m0, n0]) m2 = self.repo.create_commit("refs/heads/mainline", author, committer, "mainline 2\n\nlog", tree, [m1]) n1 = self.repo.create_commit("refs/heads/net", author, committer, "net 1\n\nlog", tree, [n0]) n2 = self.repo.create_commit("refs/heads/net", author, committer, "net 2\n\nlog", tree, [n1]) oot0 = self.repo.create_commit("refs/heads/oot", author, committer, "oot 0\n\nlog", tree, [m0]) oot1 = self.repo.create_commit("refs/heads/oot", author, committer, "oot 1\n\nlog", tree, [oot0]) k_org_canon_prefix = "git://git.kernel.org/pub/scm/linux/kernel/git/" origin_repo = k_org_canon_prefix + "torvalds/linux.git" self.repo.remotes.create("origin", origin_repo) self.repo.references.create("refs/remotes/origin/master", m2) net_repo = k_org_canon_prefix + "davem/net.git" self.repo.remotes.create("net", net_repo) self.repo.references.create("refs/remotes/net/master", n2) self.index = git_sort.SortIndex(self.repo) # setup stub kernel-source content self.ks_dir = tempfile.mkdtemp(prefix="gs_ks") patch_dir = os.path.join(self.ks_dir, "patches.suse") os.mkdir(patch_dir) os.chdir(patch_dir) tests.support.format_patch(self.repo.get(m0), mainline="v3.45-rc6") tests.support.format_patch(self.repo.get(n0), mainline="v3.45-rc6") tests.support.format_patch(self.repo.get(n1), repo=net_repo) tests.support.format_patch(self.repo.get(n2), repo=net_repo) tests.support.format_patch(self.repo.get(oot0)) tests.support.format_patch(self.repo.get(oot1))
def setUp(self): os.environ["XDG_CACHE_HOME"] = tempfile.mkdtemp(prefix="gs_cache") self.repo_dir = tempfile.mkdtemp(prefix="gs_repo") self.repo = pygit2.init_repository(self.repo_dir) author = pygit2.Signature('Alice Author', '*****@*****.**') committer = pygit2.Signature('Cecil Committer', '*****@*****.**') tree = self.repo.TreeBuilder().write() self.commits = [] m0 = self.repo.create_commit( "refs/heads/mainline", author, committer, "mainline 0\n\nlog", tree, [] ) self.commits.append(self.repo.get(m0)) self.repo.create_reference_direct("refs/tags/v4.8", m0, False) self.repo.create_tag("v4.9", m0, pygit2.GIT_REF_OID, committer, "Linux 4.9") n0 = self.repo.create_commit( "refs/heads/net", author, committer, "net 0\n\nlog", tree, [m0] ) self.commits.append(self.repo.get(n0)) self.repo.checkout("refs/heads/mainline") m1 = self.repo.create_commit( "refs/heads/mainline", author, committer, "mainline 1, merge net\n\nlog", tree, [m0, n0] ) self.repo.create_tag("v4.10", m1, pygit2.GIT_REF_OID, committer, "Linux 4.10") self.repo.remotes.create("origin", "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git") self.repo.references.create("refs/remotes/origin/master", m1) self.repo.remotes.create("net", "git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git") self.repo.references.create("refs/remotes/net/master", n0) self.heads = {"mainline" : str(m1), "net" : str(n0)} self.index = git_sort.SortIndex(self.repo)
def setUp(self): os.environ["XDG_CACHE_HOME"] = tempfile.mkdtemp(prefix="gs_cache") # setup stub linux repository os.environ["LINUX_GIT"] = tempfile.mkdtemp(prefix="gs_repo") self.repo = pygit2.init_repository(os.environ["LINUX_GIT"]) author = pygit2.Signature('Alice Author', '*****@*****.**') committer = pygit2.Signature('Cecil Committer', '*****@*****.**') tree = self.repo.TreeBuilder().write() parent = [] commits = [] for i in range(3): subject = "mainline %d" % (i, ) cid = self.repo.create_commit("refs/heads/master", author, committer, "%s\n\nlog" % (subject, ), tree, parent) parent = [cid] commits.append(cid) self.commits = commits self.repo.remotes.create( "origin", "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git") self.repo.references.create("refs/remotes/origin/master", commits[-1]) self.index = git_sort.SortIndex(self.repo) # setup stub kernel-source content self.ks_dir = tempfile.mkdtemp(prefix="gs_ks") patch_dir = os.path.join(self.ks_dir, "patches.suse") os.mkdir(patch_dir) os.chdir(patch_dir) for commit in commits: tests.support.format_patch(self.repo.get(commit), mainline="v3.45-rc6")
"-u", "--upstream", action="store_true", help="Move patches upstream between subsystem sections " "as appropriate. Default: false.") parser.add_argument("series", nargs="?", metavar="series.conf", help="series.conf file which will be modified in " "place. Default: if stdin is a terminal, " "\"series.conf\"; otherwise, read input from stdin.") args = parser.parse_args() repo_path = lib.repo_path() repo = pygit2.Repository(repo_path) index = git_sort.SortIndex(repo) filter_mode = False if args.series is None: if sys.stdin.isatty(): path = "series.conf" else: filter_mode = True else: path = args.series if filter_mode: f = sys.stdin else: try: f = open(path) except FileNotFoundError as err:
def sequence_insert(series, rev, top): """ top is the top applied patch, None if none are applied. Caller must chdir to where the entries in series can be found. Returns the name of the new top patch and how many must be applied/popped. """ git_dir = repo_path() repo = pygit2.Repository(git_dir) index = git_sort.SortIndex(repo) try: commit = str(repo.revparse_single(rev).id) except ValueError: raise exc.KSError("\"%s\" is not a valid revision." % (rev, )) except KeyError: raise exc.KSError("Revision \"%s\" not found in \"%s\"." % ( rev, git_dir, )) marker = "# new commit" new_entry = InputEntry(marker) try: new_entry.dest = index.lookup(commit) except git_sort.GSKeyError: raise exc.KSError( "Commit %s not found in git-sort index. If it is from a " "repository and branch pair which is not listed in \"remotes\", " "please add it and submit a patch." % (commit, )) new_entry.dest_head = new_entry.dest.head try: before, inside, after = series_conf.split(series) except exc.KSNotFound as err: raise exc.KSError(err) before, after = map(series_conf.filter_series, ( before, after, )) current_patches = flatten( [before, series_conf.filter_series(inside), after]) if top is None: top_index = 0 else: top_index = current_patches.index(top) + 1 input_entries = parse_inside(index, inside, False) input_entries.append(new_entry) sorted_entries = series_sort(index, input_entries) new_patches = flatten([ before, [line.strip() for lines in sorted_entries.values() for line in lines], after, ]) commit_pos = new_patches.index(marker) if commit_pos == 0: # should be inserted first in series name = "" else: name = new_patches[commit_pos - 1] del new_patches[commit_pos] if new_patches != current_patches: raise exc.KSError("Subseries is not sorted. " "Please run scripts/series_sort.py.") return ( name, commit_pos - top_index, )