def test_write_patch(self): """Test moving a patch to it's final location""" class opts: patch_numbers = False # Add test file with topic: msg = ("added foo\n\n" "Gbp-Pq-Topic: gbptest") self.add_file('foo', 'foo', msg) # Write it out as patch and check it's existence d = os.getcwd() patchfile = self.repo.format_patches('HEAD^', 'HEAD', d)[0] expected = os.path.join(d, '0001-added-foo.patch') self.assertEqual(expected, patchfile) pq.write_patch(patchfile, self.repo.path, opts) expected = os.path.join(self.repo.path, 'gbptest', 'added-foo.patch') self.assertTrue(os.path.exists(expected)) logging.debug(file(expected).read()) # Reapply the patch to a new branch self.repo.create_branch('testapply', 'HEAD^') self.repo.set_branch('testapply') self.repo.apply_patch(expected) self.repo.commit_all("foo") diff = self.repo.diff('master', 'testapply') # Branches must be identical afterwards self.assertEqual('', diff)
pq_branch = pq_branch_name(branch) try: shutil.rmtree(PATCH_DIR) except OSError as (e, msg): if e != errno.ENOENT: raise GbpError("Failed to remove patch dir: %s" % msg) else: gbp.log.debug("%s does not exist." % PATCH_DIR) patches = repo.format_patches(branch, pq_branch, PATCH_DIR, signature=False) if patches: f = file(SERIES_FILE, 'w') gbp.log.info("Regenerating patch queue in '%s'." % PATCH_DIR) for patch in patches: filename = write_patch(patch, PATCH_DIR, options) f.write(filename[len(PATCH_DIR):] + '\n') f.close() GitCommand('status')(['--', PATCH_DIR]) else: gbp.log.info("No patches on '%s' - nothing to do." % pq_branch) def safe_patches(series): """ Safe the current patches in a temporary directory below .git/ @param series: path to series file @return: tmpdir and path to safed series file