from the commit(s) from issue 633. The diff parser assumed a properly
formatted diff that denotes empty context lines with a single space in
the first column. This single space however was missing, because the
hg and git backends got the diff through PHP's exec() function and
this returns already line-splitted output, but - and this is the actual
problem - removes trailing whitespace at the end of each line, essentially
making " \n" only "\n". When splitting this string now again with
PREG_SPLIT_NO_EMPTY the empty line was completely lost in the diff output.
To make it clear that an empty line does not mark a context line now, but
should stop the diff parsing, the Diff parser now also defaults to 'false'
as line type.
This commit fixes issue 688.
- IssueUpdate.php: use dynamically set field validators for dynamically
created fields; let relation_type0 and relation_issue0 exist at any time;
check the validity of a user selection and combine the various input fields
if possible; do the database updates for links; change the "change" format
for labels to a more precise structure and no longer trust on a leading
dash for removed labels
- IssueCreate.php: change the validator calls and field names
- Issue.php (getGroupedRelatedIssues): make it possible to return only a
flat list of integers for easier processing
- 17AddIssueRelations.php: migrate the previous serialized "changes" format
for issue comments to the new, more structured format (up and down)
- js-autocomplete.html: add support for multiple input fields
- view.html: output relation changes and wrap the related issues stanzas into
paragraphs
- NEWS.mdtext: note the addition and the need for a specific version of Pluf
- tags and branches with spaces are now properly parsed (issue 663)
- use --style instead of --template option of hg to include much more
output for the log command; use that to query the parent revisions of
a revision (if any) and also to query the actual changes of a revision
- make the log parser much more robust towards changes in the "header"
of the log output
- be explicit and expect only ssh-dss or ssh-rsa keys
- allow any character (even line breaks and whitespace) in the optional comment,
but shrink all of them to simple spaces (fixes issue 679)
- test the newly uploaded key against existing keys only by the base key data,
not the fully uploaded string (that might contain a changed comment line or
the like) to avoid duplicates; also only check the keys of the user for
duplicates, not all existing keys in the forge (if for whatever reason two
user accounts share a key)
Added a template for getting a controlled log; in parseLog, changed the regular
expression to match the pattern used in the template (fixes issues 507 and 508).
The diff parser code was rewritten for clarity and speed and now handles
a couple of ugly cornercases, like SVN's property change output and single
change chunks, much better. Since the path parsing was unified as well,
the SCM interface gained a new method `getPathStripLevel()` which determines
how many path components need to be shoven off a file name for the SCM
to form a valid path in the workspace (similar to patch(1)'s --strip option).
Fixes issue 627. Automated tests follow.
This works similar to git branch --contains REV; additionally give the
revision id and not some possibly symbolic name to the inBranches()
call when we determine the branches a commit is in.