| Index: checkout.py
|
| diff --git a/checkout.py b/checkout.py
|
| index a5cf5801f1a8251e1b26f971c7a2dbfb1ba6a486..21c283e8cbd4e3860f8a52fbe01f2e7bcbc9ea1f 100644
|
| --- a/checkout.py
|
| +++ b/checkout.py
|
| @@ -127,10 +127,14 @@ class RawCheckout(CheckoutBase):
|
| with open(os.path.join(filename), 'wb') as f:
|
| f.write(p.get())
|
| else:
|
| - stdout = subprocess2.check_output(
|
| - ['patch', '-p%s' % p.patchlevel],
|
| - stdin=p.get(),
|
| - cwd=self.project_path)
|
| + if p.diff_hunks:
|
| + stdout = subprocess2.check_output(
|
| + ['patch', '-p%s' % p.patchlevel],
|
| + stdin=p.get(),
|
| + cwd=self.project_path)
|
| + elif p.is_new:
|
| + # There is only a header. Just create the file.
|
| + open(os.path.join(self.project_path, p.filename), 'w').close()
|
| for post in post_processor:
|
| post(self, p)
|
| except OSError, e:
|
| @@ -258,8 +262,6 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
|
| stdout += self._check_output_svn(
|
| ['delete', p.filename, '--force'], credentials=False)
|
| else:
|
| - new = not os.path.exists(p.filename)
|
| -
|
| # svn add while creating directories otherwise svn add on the
|
| # contained files will silently fail.
|
| # First, find the root directory that exists.
|
| @@ -278,10 +280,14 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
|
| with open(os.path.join(self.project_path, p.filename), 'wb') as f:
|
| f.write(p.get())
|
| else:
|
| - cmd = ['patch', '-p%s' % p.patchlevel, '--forward', '--force']
|
| - stdout += subprocess2.check_output(
|
| - cmd, stdin=p.get(), cwd=self.project_path)
|
| - if new:
|
| + if p.diff_hunks:
|
| + cmd = ['patch', '-p%s' % p.patchlevel, '--forward', '--force']
|
| + stdout += subprocess2.check_output(
|
| + cmd, stdin=p.get(), cwd=self.project_path)
|
| + elif p.is_new:
|
| + # There is only a header. Just create the file.
|
| + open(os.path.join(self.project_path, p.filename), 'w').close()
|
| + if p.is_new:
|
| stdout += self._check_output_svn(
|
| ['add', p.filename, '--force'], credentials=False)
|
| for prop in p.svn_properties:
|
| @@ -410,6 +416,8 @@ class GitCheckoutBase(CheckoutBase):
|
| f.write(p.get())
|
| stdout += self._check_output_git(['add', p.filename])
|
| else:
|
| + # No need to do anything special with p.is_new or if not
|
| + # p.diff_hunks. git apply manages all that already.
|
| stdout += self._check_output_git(
|
| ['apply', '--index', '-p%s' % p.patchlevel], stdin=p.get())
|
| for prop in p.svn_properties:
|
|
|