Commit Graph

36 Commits

Author SHA1 Message Date
Patrick Georgi
38e6e4f8d3 Use all registered email addresses to map Scm users to IDF users. 2011-02-21 10:57:36 +01:00
Thomas Keller
ddb05e68a3 Implement IDF_Scm::getExtraProperties 2011-01-24 15:11:12 +01:00
Thomas Keller
296091e977 Fetch parent revisions for monotone commits as well. 2011-01-20 23:45:21 +01:00
Thomas Keller
77ba17eb61 Remove commented-out, unneeded manual includes 2011-01-20 23:40:21 +01:00
Thomas Keller
caac979263 Don't throw an exception in case we do not find a branch cert tacked on
a revision from which we want to start our log from, but simply ignore
that and go over to the next revision. Note that this is also a bit
fragile and should probably be converted to plain mtn au log usage.
2011-01-17 11:57:39 +01:00
Thomas Keller
39c29dbe10 Started on issue 544, extended commit details
* Scm.php: new SCM method "getChanges" which returns all available
  change information grouped by type
* Monotone.php: implement getChanges via get_revision
* <other scms>: rename "changes" member for getCommit to "diff" which
  matches better
* Source.php: query the commit's changes and set them in the template
* commit.html: render the changes, type-by-type. Link to the tree or
  the individual diff if applicable
* styles.css: some initial style sheet work
2010-12-08 01:48:26 +01:00
Thomas Keller
874b5aa7e9 monotone changelog: do not add the parents of revisions which have not attached
the branch certificates in question to the horizont, otherwise we end up going
up the whole history for some feature branch as soon as we hit the base branch
of a project.
2010-12-02 23:23:38 +01:00
Thomas Keller
70e8d12420 Output the branch a particular commit is on; this is easy for
mercurial and monotone, but slightly harder till impossible to
do properly for git and svn. Please review and eventually adapt
the code to make it work better (partially fixes issue 450)
2010-11-17 01:53:17 +01:00
Thomas Keller
fe001abd26 Rework the way IDF's SCM interface provides downloadable snapshots.
Instead of returning a command which gets executed and which should
pass through / stream its output data to the client, we're just
returning an instance of Pluf_HTTP_Response. This is needed, because
some SCMs, most noticable monotone, have no locally executable command
to provide a snapshot archive (and probably never will for our kind
of setup).

We therefor added a little BSD-licensed class "ZipArchive" which allows
the creation of pkzip-compatible archives on the fly by letting it eat
the file contents directly feed from the (remote) stdio instance.
Download performance is ok and lies between 15K/s and 110K/s, but at
least we do no longer block the browser while we pre-generate the zip
file server-side.

Thanks to Patrick Georgi for all his work!
2010-10-30 21:52:40 +00:00
Thomas Keller
d25bc74d71 If no branch certificates are attached to a revision, we do not get
an empty array back from _getCerts(), but no entry for 'branch' at all.
2010-10-09 10:09:51 +00:00
Thomas Keller
97ea828532 Use a persistent cache through Pluf_Cache to speed up cert queries. 2010-10-04 15:42:21 +00:00
Thomas Keller
d539eaf64b - _getLastChangeFor(): drop that, no longer needed
- getTree(), getPathInfo(): use the new extended manifest format
  and save the calls to query file sizes from contents as well
  as the calls to determine the revision in which a file changed
  at last
2010-10-04 15:22:57 +00:00
Thomas Keller
eebdc5ad12 IDF_Scm_Monotone::getCommit() separate the first line of a commit from the
rest and write the rest in full_message - just like we do it for log and
everything else. This is ugly, really ugly, because it assumes something
on the format of a commit message, which might not be true at all for
some project, but this is something Loic has to decide (see also issue 491
and issue 535)
2010-09-28 21:37:26 +00:00
Thomas Keller
29b8bf8a4e Some revisions might not carry a branch cert (yet), because they're
part of another branch whose certs haven't been pushed into the server
yet, so we need to skip these revisions while going back in time
for the changelog. The initial revision however must carry a branch
cert, otherwise we have nothing to "follow".
2010-09-15 08:46:10 +00:00
Thomas Keller
77cdbefe0c Added getter for the stdio instance 2010-09-13 00:50:16 +00:00
Thomas Keller
37d0ccc728 partially resolve issue 492 (at least for the monotone tree view) 2010-09-11 00:28:31 +02:00
Thomas Keller
21cdf60c31 Introduce a more subtle concept of validity when it comes to revision
indentifiers in IDF - the SCM function isValidRevision has been replaced
by a validateRevision() method which returns one of three states,
valid, invalid or ambiguous.
The source view can then act accordingly and display disambiguate view
for the latter, so the user can select for which revision he actually
wants to execute the requested action. Also, invalid revisions now lead
to another separate view, telling the user that it is invalid / does
not exist and pointing him optionally to the help page where he can read
further how to access his repository to push the first changes into.
(partially resolves issue 525)
2010-09-01 13:13:52 +00:00
Thomas Keller
194dcad0e3 Don't check if the main branch is empty, but let the view code later
handle the case where a selector doesn't resolve to at least one
revision gracefully (see also issue 525).
2010-08-29 22:59:12 +00:00
Thomas Keller
8aae0f29d4 refactor the basicio parser into a separate utility class (we soon need a compiler part as well) 2010-08-28 14:06:17 +00:00
Thomas Keller
31e81118dd Follow IDFs coding standards and tweak opening curly braces as well as
quoting where possible
2010-08-13 11:21:07 +02:00
Thomas Keller
de036920a4 * src/IDF/Middlewre.php: add a global template variable
"usherConfigured" to denote whether we render links to the usher
control functions in the forge administration
* src/IDF/Scm/Monotone.php: moved IDF_Scm_Monotone_Stdio into
separate file src/IDF/Scm/Monotone/Stdio.php
* src/IDF/Scm/Usher.php: new class to query and modify the state
of a running usher instance
* src/IDF/Views/Admin.php: add actions to query the list of
configured servers, edit their status, view their open connections
and control the state of the usher as a whole
* src/IDF/conf/idf.php-dist: optional usher configuration added;
mail address of monotone-users added; spelling changes
* src/IDF/conf/urls.php: added needed URLs for usher actions
* src/IDF/templates/idf/gadmin/base.html: usher links
2010-08-07 23:28:13 +02:00
Thomas Keller
d2f0bac907 * Monotone.php: get inTags() and inBranches() correct - they need to
return a list with selectors as keys, otherwise the main menu won't
  link the active revision, but instead use the main branch
* changelog.html, tree.html: shorten the branch / tag output a bit
  (still ugly to have a fixed output like this, though), link tags
  by their selector, no longer by their revision ID. We loose some
  flexibility here, since tags could actually mark different
  revisions, which are now ignored
2010-06-29 09:59:49 +02:00
Thomas Keller
7cbc690890 use date instead of gmdate, monotone's dates are already UTC 2010-06-28 08:47:39 +02:00
Thomas Keller
f3268b3d37 uh, we should really share one mtn instance per project and request... 2010-06-24 02:27:38 +02:00
Thomas Keller
1fd1e63043 * idf.php-dist: rework the documentation of the configuration options and
add two scenarios, one with a single, global database and one with
  multiple project databases and usher as proxy; add an option for additional
  command line options for the mtn process; remove the protocol type
  configuration option - we're handling this implicit with the new
  mtn_remote_url configuration
* Monotone.php: add the IDF user for ssh:// URIs; add support for remote_stdio
  and rework the command line stitching
2010-06-24 01:58:41 +02:00
Thomas Keller
5ce324f35f * clear the process environment and set LANG properly so we get english error codes and still keep utf8 compliant
* rename _read to _readStdout and introduce a generic _readStderr which reads from the other pipe on failure
2010-06-24 00:10:41 +02:00
Thomas Keller
9a8148079d prevent endless redirection if a requested branch does not exist, i.e. has no matching revisions 2010-06-23 00:22:10 +02:00
Thomas Keller
24762adecc improve error handling and reporting of the stdio process 2010-06-21 23:24:47 +02:00
Thomas Keller
e0b0a732b4 phpdoc improved; remove _getMasterBranch() method and implement the specific code directly in getMainBranch() 2010-05-02 01:31:30 +02:00
Thomas Keller
59ad0f5b11 * idf.php-dist: improve the document of the various mtn-related configure options; introduce an option to configure the protocole - separate from the url option, which we now name mtn_remote_host
* IDF_Project: optionally give getSourceAccessUrl() a commit argument, so a particular VCS module can determine a subset of revisions to pull for the specific revision which is browsed
* IDF_Scm_*: add the argument null'd for all VCS; implement a branch lookup for monotone
* tree.html: display the correct branch to clone under each revision tree
2010-05-02 00:56:04 +02:00
Thomas Keller
3b53ceedcd * Monotone.php (IDF_Scm_Monotone): basic_io values need to be unescaped; implement getChangeLog()
* Monotone.php (IDF_Scm_Monotone_Stdio): add support for multiple, equally named options
* Source.php, commit.html: split-off the global commit template (which had some separate code already for SVN) and adapt the left blocks for mtn to shorten branch and tag names just like we do everywhere else
2010-05-01 01:05:54 +02:00
Thomas Keller
445c90fefe Create a separate class which handles command streaming over mtn automate stdio. Use that everywhere instead of the direct system calls. 2010-04-30 02:03:58 +02:00
Thomas Keller
b7ced5fa69 Do not shorten the changelog in the SCM model - thats a task for the view. 2010-04-29 23:38:28 +02:00
Thomas Keller
cf22909722 * isAvailable(): check monotone's interface version and mark the interface as available if it matches (we might see later on if this alone is actually a good idea especially if we browse an empty database...)
* _getCerts(): implement a cert cache and make multiple cert values easily available
* getCommit(), getCommitLarge(), getFile(), getPathInfo(), testHash(): implement
* getTags(): save the first found revision id for a tag as key in the associative array to make tags actually browsable
2010-04-29 01:44:34 +02:00
Thomas Keller
94a5464155 * idf.php-dist: no need to configure a branch prefix any longer now that the project owner can define the master branch name
* Monotone.php: change accordingly to use the configured master branch name and fallback to all branches ("*") if noone is found
2010-04-27 23:28:52 +02:00
Thomas Keller
9fd4334dec Start on monotone support for indefero. The SCM backend is about 30% done, interesting pieces like getTree() are not finished yet. 2010-04-26 23:56:25 +02:00