msg96924 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2009-12-27 20:57 |
The patch inserts \t character between filename and timestamp in unified and context diff headers. According to specification by Guido Van Rossum =) http://www.artima.com/weblogs/viewpost.jsp?thread=164293 And de-facto output from various tools http://code.google.com/p/python-patch/source/browse/#svn/trunk/doc And the common sense --- that it is easier to split this stuff +++ than this one into filename + timestamp --- diff.py Sun Dec 27 16:08:28 2009 +++ trunk/diff.py Sun Dec 27 15:46:58 2009 |
|
|
msg96961 - (view) |
Author: Brian Curtin (brian.curtin) *  |
Date: 2009-12-28 17:38 |
I don't think the conditional checks around the timestamps are necessary. Couldn't you just put the \t directly in the string that gets yielded? That way the chunk headers always follow the same format. |
|
|
msg96980 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2009-12-29 00:34 |
Conditional checks are required to prevent leaving trailing whitespace in filename when date component is not present. Such trailing whitespace may confuse patch tools. [1] [1] http://code.google.com/p/python-patch/issues/detail?id=2 |
|
|
msg96986 - (view) |
Author: Brian Curtin (brian.curtin) *  |
Date: 2009-12-29 04:33 |
Shouldn't the patch tool handle that? FWIW, both the "svn diff" and *nix diff utilities produce headers with the parts split by a tab character. Would the code in example.py work in your tool to handle both tabs and spaces? |
|
|
msg96989 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2009-12-29 10:28 |
Filenames may contain spaces too. --- handle dis Sun Dec 27 16:08:28 2009 --- или вот это пон, дек 27 16:08:28 2009 The last line is space separated filename and date in Russian locale. Patch tool should handle that, but as you may see it is not always possible. That's why difflib modification with \t separator will greatly improve interoperability of difflib patches regardless of timestamp format. Stripping trailing whitespace when there is no timestamp serves the same purpose. We can assume that patch tools are perfect, but I wouldn't write my tool if that was true, so its better to be friendly on difflib side and generate the output that won't require more work than necessary to use it. |
|
|
msg97013 - (view) |
Author: Brian Curtin (brian.curtin) *  |
Date: 2009-12-29 23:36 |
I agree that splitting with a tab character is good, but I think it should be split by a tab character in every case. If the separator is different based on what data is provided, then it complicates parsing and would have to be explained in documentation that we provide different header formats. |
|
|
msg97018 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2009-12-30 00:57 |
This patch makes sure filename and date split by tab in every case when date is provided. |
|
|
msg97164 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2010-01-03 15:00 |
Is there any reason why you changed some of the examples in the docstrings (e.g. 'Sat Jan 26 23:30:50 1991' -> '1991-01-26 23:30:50')? |
|
|
msg97166 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-01-03 15:10 |
It is the same reason as for removing recommendation from docstring to generate timestamps in the format returned by time.ctime(). See issue #7582 |
|
|
msg99167 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-02-10 15:40 |
The reason is to provide a good usage example. |
|
|
msg102046 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-03-31 23:38 |
depends on issue #7583 |
|
|
msg102154 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-04-02 10:49 |
Refreshed patches - feel free to apply in any order you want. Convenience link for reviews: http://codereview.appspot.com/809043/show |
|
|
msg102160 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-04-02 11:41 |
These patches are incrementally add features. Feel free to apply one that suits most. Codereview provides more convenient way to review differences between these. attaching optional patch that removes recommendation to use ctime format for timestamps |
|
|
msg102318 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2010-04-04 03:36 |
Your last patch looks the best to me. I agree both that a tab should not be emitted if there is no date (which is what git, for example, does), and that ISO 8601 timestamps should be promoted as the preferred format. As you pointed out, issue 7583 needs to be resolved before this can be applied. In the meantime it would be nice to add an additional test for the no-tab-if-no-date case. |
|
|
msg102323 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2010-04-04 07:06 |
We could avoid the 7583 problem by making the doctests use NORMALIZE_WHITESPACE and moving the real *tests* into the unittests for the module. I think that would be a good thing to do anyway. |
|
|
msg102530 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-04-07 10:14 |
Added unittest for tab with and without set filedate. Removed #7583 dependency with NORMALIZE_WHITESPACE. |
|
|
msg102551 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2010-04-07 17:53 |
Great, thanks. I'll check this in when the branch is unfrozen. |
|
|
msg102958 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2010-04-12 16:59 |
Applied to trunk in r8004 and py3k in r8006. |
|
|
msg103011 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-04-13 05:20 |
r80004 and r80006 to be exact. Great! Thanks! =) |
|
|
msg103041 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2010-04-13 12:15 |
Yes, thanks for the typo correction. |
|
|
msg105641 - (view) |
Author: anatoly techtonik (techtonik) |
Date: 2010-05-13 16:24 |
tag:difflib |
|
|