From 1b54afdce56520414d8f20157054141cb09c7166 Mon Sep 17 00:00:00 2001 From: Dmitri Iouchtchenko Date: Sun, 13 Jun 2021 14:37:28 -0400 Subject: [PATCH 001/134] Saturate day of month in datepicker Summary: The datepicker could step by the wrong number of months, due to the date rolling over to the next month when the number of days in the month is exceeded. For example, going forward from January 31 would jump to March 3, while going backward from July 31 would only go to July 1. Push the date back to ensure that the datepicker stays in the correct month when switching. Test Plan: Changed months starting from an assortment of dates. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: artms, Korvin Differential Revision: https://secure.phabricator.com/D21673 --- resources/celerity/map.php | 18 +++++++++--------- .../rsrc/js/core/behavior-fancy-datepicker.js | 7 +++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 309e698272..01ad9da370 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -481,7 +481,7 @@ return array( 'rsrc/js/core/behavior-detect-timezone.js' => '78bc5d94', 'rsrc/js/core/behavior-device.js' => 'ac2b1e01', 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '7ad020a5', - 'rsrc/js/core/behavior-fancy-datepicker.js' => '956f3eeb', + 'rsrc/js/core/behavior-fancy-datepicker.js' => '36821f8d', 'rsrc/js/core/behavior-form.js' => '55d7b788', 'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a', 'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a', @@ -635,7 +635,7 @@ return array( 'javelin-behavior-editengine-reorder-configs' => '4842f137', 'javelin-behavior-editengine-reorder-fields' => '0ad8d31f', 'javelin-behavior-event-all-day' => '0b1bc990', - 'javelin-behavior-fancy-datepicker' => '956f3eeb', + 'javelin-behavior-fancy-datepicker' => '36821f8d', 'javelin-behavior-global-drag-and-drop' => '1cab0e9a', 'javelin-behavior-harbormaster-log' => 'b347a301', 'javelin-behavior-herald-rule-editor' => '0922e81d', @@ -1229,6 +1229,13 @@ return array( 'aphront-typeahead-control-css', 'phui-tag-view-css', ), + '36821f8d' => array( + 'javelin-behavior', + 'javelin-util', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-vector', + ), '3829a3cf' => array( 'javelin-behavior', 'javelin-uri', @@ -1781,13 +1788,6 @@ return array( 'javelin-vector', 'javelin-stratcom', ), - '956f3eeb' => array( - 'javelin-behavior', - 'javelin-util', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-vector', - ), '9623adc1' => array( 'javelin-behavior', 'javelin-stratcom', diff --git a/webroot/rsrc/js/core/behavior-fancy-datepicker.js b/webroot/rsrc/js/core/behavior-fancy-datepicker.js index afd5ff25ad..8059e214fe 100644 --- a/webroot/rsrc/js/core/behavior-fancy-datepicker.js +++ b/webroot/rsrc/js/core/behavior-fancy-datepicker.js @@ -424,6 +424,13 @@ JX.behavior('fancy-datepicker', function(config, statics) { value_m += 12; value_y--; } + // This relies on months greater than 11 rolling over into the next + // year and days less than 1 rolling back into the previous month. + var last_date = new Date(value_y, value_m, 0); + if (value_d > last_date.getDate()) { + // The date falls outside the new month, so stuff it back in. + value_d = last_date.getDate(); + } break; case 'd': // User clicked a day. From bf889c1c083e797fb8ed511f1b31aa7dba3ec0dd Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 30 Apr 2021 08:32:17 -0700 Subject: [PATCH 002/134] Correct a mistaken path in the "Advanced Configuration" documentation Summary: Ref PHI2071. This path is incorrect; the correct path is `local.json`. Test Plan: Looked in my `conf/local/` directory. Differential Revision: https://secure.phabricator.com/D21663 --- src/docs/user/configuration/advanced_configuration.diviner | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/user/configuration/advanced_configuration.diviner b/src/docs/user/configuration/advanced_configuration.diviner index 5721ffd597..690b51ea04 100644 --- a/src/docs/user/configuration/advanced_configuration.diviner +++ b/src/docs/user/configuration/advanced_configuration.diviner @@ -21,7 +21,7 @@ to lowest priority: - **Database**: Values are stored in the database and edited from the web UI by administrators. They have the highest priority and override other settings. - - **Local**: Values are stored in `conf/local/config.json` and edited by + - **Local**: Values are stored in `conf/local/local.json` and edited by running `bin/config`. - **Config Files**: Values are stored in a config file in `conf/`. The file to use is selected by writing to `conf/local/ENVIRONMENT`, or setting the From a641ec82a3235a599f294be1885a8270061b410c Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 25 Jun 2021 08:42:40 -0700 Subject: [PATCH 003/134] Add an "Authority" control to Packages to support "Watcher" packages Summary: See T13657. An install has "watcher" packages which should not allow owners to "Force Accept" other packages. Test Plan: - Created package A, which I own, on "/", with "Weak" authority. - Created package B, which I do not own, on "/src". - Created a revision which touches "/src" and added package B as a reviewer. - Attempted to accept the revision... - Before patch: permitted to "Force Accept" for package B. - After patch: not allowed to "Force Accept" for package B. - Verified that setting package "A" back to "Strong" authority allows a force-accept for package B. Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Differential Revision: https://secure.phabricator.com/D21674 --- .../20210625.owners.01.authority.sql | 2 + .../20210625.owners.02.authority-default.sql | 3 + src/__phutil_library_map__.php | 2 + .../storage/DifferentialRevision.php | 8 +++ .../PhabricatorOwnersDetailController.php | 6 ++ .../PhabricatorOwnersPackageEditEngine.php | 13 +++++ .../query/PhabricatorOwnersPackageQuery.php | 13 +++++ .../storage/PhabricatorOwnersPackage.php | 45 +++++++++++++++ ...catorOwnersPackageAuthorityTransaction.php | 56 +++++++++++++++++++ 9 files changed, 148 insertions(+) create mode 100644 resources/sql/autopatches/20210625.owners.01.authority.sql create mode 100644 resources/sql/autopatches/20210625.owners.02.authority-default.sql create mode 100644 src/applications/owners/xaction/PhabricatorOwnersPackageAuthorityTransaction.php diff --git a/resources/sql/autopatches/20210625.owners.01.authority.sql b/resources/sql/autopatches/20210625.owners.01.authority.sql new file mode 100644 index 0000000000..96c36e7701 --- /dev/null +++ b/resources/sql/autopatches/20210625.owners.01.authority.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_owners.owners_package + ADD authorityMode VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT}; diff --git a/resources/sql/autopatches/20210625.owners.02.authority-default.sql b/resources/sql/autopatches/20210625.owners.02.authority-default.sql new file mode 100644 index 0000000000..98cd939777 --- /dev/null +++ b/resources/sql/autopatches/20210625.owners.02.authority-default.sql @@ -0,0 +1,3 @@ +UPDATE {$NAMESPACE}_owners.owners_package + SET authorityMode = 'strong' + WHERE authorityMode = ''; diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 3eedd1605a..663c64fff9 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -3966,6 +3966,7 @@ phutil_register_library_map(array( 'PhabricatorOwnersOwner' => 'applications/owners/storage/PhabricatorOwnersOwner.php', 'PhabricatorOwnersPackage' => 'applications/owners/storage/PhabricatorOwnersPackage.php', 'PhabricatorOwnersPackageAuditingTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAuditingTransaction.php', + 'PhabricatorOwnersPackageAuthorityTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAuthorityTransaction.php', 'PhabricatorOwnersPackageAutoreviewTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAutoreviewTransaction.php', 'PhabricatorOwnersPackageContextFreeGrammar' => 'applications/owners/lipsum/PhabricatorOwnersPackageContextFreeGrammar.php', 'PhabricatorOwnersPackageDatasource' => 'applications/owners/typeahead/PhabricatorOwnersPackageDatasource.php', @@ -10582,6 +10583,7 @@ phutil_register_library_map(array( 'PhabricatorNgramsInterface', ), 'PhabricatorOwnersPackageAuditingTransaction' => 'PhabricatorOwnersPackageTransactionType', + 'PhabricatorOwnersPackageAuthorityTransaction' => 'PhabricatorOwnersPackageTransactionType', 'PhabricatorOwnersPackageAutoreviewTransaction' => 'PhabricatorOwnersPackageTransactionType', 'PhabricatorOwnersPackageContextFreeGrammar' => 'PhutilContextFreeGrammar', 'PhabricatorOwnersPackageDatasource' => 'PhabricatorTypeaheadDatasource', diff --git a/src/applications/differential/storage/DifferentialRevision.php b/src/applications/differential/storage/DifferentialRevision.php index 23f5db9151..92b303d0ba 100644 --- a/src/applications/differential/storage/DifferentialRevision.php +++ b/src/applications/differential/storage/DifferentialRevision.php @@ -311,9 +311,17 @@ final class DifferentialRevision extends DifferentialDAO // which the actor may be able to use their authority over to gain the // ability to force-accept for other packages. This query doesn't apply // dominion rules yet, and we'll bypass those rules later on. + + // See T13657. We ignore "watcher" packages which don't grant their owners + // permission to force accept anything. + $authority_query = id(new PhabricatorOwnersPackageQuery()) ->setViewer($viewer) ->withStatuses(array(PhabricatorOwnersPackage::STATUS_ACTIVE)) + ->withAuthorityModes( + array( + PhabricatorOwnersPackage::AUTHORITY_STRONG, + )) ->withAuthorityPHIDs(array($viewer->getPHID())) ->withControl($repository_phid, $paths); $authority_packages = $authority_query->execute(); diff --git a/src/applications/owners/controller/PhabricatorOwnersDetailController.php b/src/applications/owners/controller/PhabricatorOwnersDetailController.php index ff634a1ad0..8512107e75 100644 --- a/src/applications/owners/controller/PhabricatorOwnersDetailController.php +++ b/src/applications/owners/controller/PhabricatorOwnersDetailController.php @@ -197,6 +197,12 @@ final class PhabricatorOwnersDetailController $name = idx($spec, 'short', $dominion); $view->addProperty(pht('Dominion'), $name); + $authority_mode = $package->getAuthorityMode(); + $authority_map = PhabricatorOwnersPackage::getAuthorityOptionsMap(); + $spec = idx($authority_map, $authority_mode, array()); + $name = idx($spec, 'short', $authority_mode); + $view->addProperty(pht('Authority'), $name); + $auto = $package->getAutoReview(); $autoreview_map = PhabricatorOwnersPackage::getAutoreviewOptionsMap(); $spec = idx($autoreview_map, $auto, array()); diff --git a/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php b/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php index 13f896d3f0..416f2e38f2 100644 --- a/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php +++ b/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php @@ -90,6 +90,9 @@ EOTEXT $dominion_map = PhabricatorOwnersPackage::getDominionOptionsMap(); $dominion_map = ipull($dominion_map, 'name'); + $authority_map = PhabricatorOwnersPackage::getAuthorityOptionsMap(); + $authority_map = ipull($authority_map, 'name'); + return array( id(new PhabricatorTextEditField()) ->setKey('name') @@ -118,6 +121,16 @@ EOTEXT ->setIsCopyable(true) ->setValue($object->getDominion()) ->setOptions($dominion_map), + id(new PhabricatorSelectEditField()) + ->setKey('authority') + ->setLabel(pht('Authority')) + ->setDescription( + pht('Change package authority rules.')) + ->setTransactionType( + PhabricatorOwnersPackageAuthorityTransaction::TRANSACTIONTYPE) + ->setIsCopyable(true) + ->setValue($object->getAuthorityMode()) + ->setOptions($authority_map), id(new PhabricatorSelectEditField()) ->setKey('autoReview') ->setLabel(pht('Auto Review')) diff --git a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php index 67b4836a5a..9e5e4c3234 100644 --- a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php +++ b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php @@ -10,6 +10,7 @@ final class PhabricatorOwnersPackageQuery private $repositoryPHIDs; private $paths; private $statuses; + private $authorityModes; private $controlMap = array(); private $controlResults; @@ -77,6 +78,11 @@ final class PhabricatorOwnersPackageQuery return $this; } + public function withAuthorityModes(array $modes) { + $this->authorityModes = $modes; + return $this; + } + public function withNameNgrams($ngrams) { return $this->withNgramsConstraint( new PhabricatorOwnersPackageNameNgrams(), @@ -231,6 +237,13 @@ final class PhabricatorOwnersPackageQuery $where[] = qsprintf($conn, '%LO', $clauses); } + if ($this->authorityModes !== null) { + $where[] = qsprintf( + $conn, + 'authorityMode IN (%Ls)', + $this->authorityModes); + } + return $where; } diff --git a/src/applications/owners/storage/PhabricatorOwnersPackage.php b/src/applications/owners/storage/PhabricatorOwnersPackage.php index b9e91ef958..7e58d586b2 100644 --- a/src/applications/owners/storage/PhabricatorOwnersPackage.php +++ b/src/applications/owners/storage/PhabricatorOwnersPackage.php @@ -21,6 +21,7 @@ final class PhabricatorOwnersPackage protected $dominion; protected $properties = array(); protected $auditingState; + protected $authorityMode; private $paths = self::ATTACHABLE; private $owners = self::ATTACHABLE; @@ -41,6 +42,9 @@ final class PhabricatorOwnersPackage const DOMINION_STRONG = 'strong'; const DOMINION_WEAK = 'weak'; + const AUTHORITY_STRONG = 'strong'; + const AUTHORITY_WEAK = 'weak'; + const PROPERTY_IGNORED = 'ignored'; public static function initializeNewPackage(PhabricatorUser $actor) { @@ -58,6 +62,7 @@ final class PhabricatorOwnersPackage ->setAuditingState(PhabricatorOwnersAuditRule::AUDITING_NONE) ->setAutoReview(self::AUTOREVIEW_NONE) ->setDominion(self::DOMINION_STRONG) + ->setAuthorityMode(self::AUTHORITY_STRONG) ->setViewPolicy($view_policy) ->setEditPolicy($edit_policy) ->attachPaths(array()) @@ -115,6 +120,19 @@ final class PhabricatorOwnersPackage ); } + public static function getAuthorityOptionsMap() { + return array( + self::AUTHORITY_STRONG => array( + 'name' => pht('Strong (Package Owns Paths)'), + 'short' => pht('Strong'), + ), + self::AUTHORITY_WEAK => array( + 'name' => pht('Weak (Package Watches Paths)'), + 'short' => pht('Weak'), + ), + ); + } + protected function getConfiguration() { return array( // This information is better available from the history table. @@ -130,6 +148,7 @@ final class PhabricatorOwnersPackage 'status' => 'text32', 'autoReview' => 'text32', 'dominion' => 'text32', + 'authorityMode' => 'text32', ), ) + parent::getConfiguration(); } @@ -568,6 +587,10 @@ final class PhabricatorOwnersPackage return PhabricatorOwnersAuditRule::newFromState($this->getAuditingState()); } + public function getHasStrongAuthority() { + return ($this->getAuthorityMode() === self::AUTHORITY_STRONG); + } + /* -( PhabricatorPolicyInterface )----------------------------------------- */ @@ -696,6 +719,10 @@ final class PhabricatorOwnersPackage ->setKey('dominion') ->setType('map') ->setDescription(pht('Dominion setting information.')), + id(new PhabricatorConduitSearchFieldSpecification()) + ->setKey('authority') + ->setType('map') + ->setDescription(pht('Authority setting information.')), id(new PhabricatorConduitSearchFieldSpecification()) ->setKey('ignored') ->setType('map') @@ -747,6 +774,23 @@ final class PhabricatorOwnersPackage 'short' => $dominion_short, ); + + $authority_value = $this->getAuthorityMode(); + $authority_map = self::getAuthorityOptionsMap(); + if (isset($authority_map[$authority_value])) { + $authority_label = $authority_map[$authority_value]['name']; + $authority_short = $authority_map[$authority_value]['short']; + } else { + $authority_label = pht('Unknown ("%s")', $authority_value); + $authority_short = pht('Unknown ("%s")', $authority_value); + } + + $authority = array( + 'value' => $authority_value, + 'label' => $authority_label, + 'short' => $authority_short, + ); + // Force this to always emit as a JSON object even if empty, never as // a JSON list. $ignored = $this->getIgnoredPathAttributes(); @@ -762,6 +806,7 @@ final class PhabricatorOwnersPackage 'review' => $review, 'audit' => $audit, 'dominion' => $dominion, + 'authority' => $authority, 'ignored' => $ignored, ); } diff --git a/src/applications/owners/xaction/PhabricatorOwnersPackageAuthorityTransaction.php b/src/applications/owners/xaction/PhabricatorOwnersPackageAuthorityTransaction.php new file mode 100644 index 0000000000..f01a6bf5fe --- /dev/null +++ b/src/applications/owners/xaction/PhabricatorOwnersPackageAuthorityTransaction.php @@ -0,0 +1,56 @@ +getAuthorityMode(); + } + + public function validateTransactions($object, array $xactions) { + $errors = array(); + + $map = PhabricatorOwnersPackage::getAuthorityOptionsMap(); + foreach ($xactions as $xaction) { + $new = $xaction->getNewValue(); + + if (empty($map[$new])) { + $valid = array_keys($map); + + $errors[] = $this->newInvalidError( + pht( + 'Authority setting "%s" is not valid. '. + 'Valid settings are: %s.', + $new, + implode(', ', $valid)), + $xaction); + } + } + + return $errors; + } + + public function applyInternalEffects($object, $value) { + $object->setAuthorityMode($value); + } + + public function getTitle() { + $map = PhabricatorOwnersPackage::getAuthorityOptionsMap(); + $map = ipull($map, 'short'); + + $old = $this->getOldValue(); + $new = $this->getNewValue(); + + $old = idx($map, $old, $old); + $new = idx($map, $new, $new); + + return pht( + '%s adjusted package authority rules from %s to %s.', + $this->renderAuthor(), + $this->renderValue($old), + $this->renderValue($new)); + } + +} From 96374208616b76ed202bfb79769ecea9de74d6bb Mon Sep 17 00:00:00 2001 From: Christopher Speck Date: Sun, 27 Jun 2021 16:02:57 -0400 Subject: [PATCH 004/134] Update a few random typos Summary: Found a few typos which could be updated. Test Plan: I tested the Configuration page change by navigating to `/config` and verifying the page title set in the browser as well as the page title text on the page |Before|After| |---|---| |{F9013208}|{F9013210}| |{F9013300}|{F9013301}| I verified the Conduit error message by navigating to `/auth/start/?__conduit__=1` {F9013289} The CircleCI error message was not verified due to the involvement of testing with CircleCI however the change is very minor and has very little risk of impacting any functionality. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D21675 --- .../auth/controller/PhabricatorAuthStartController.php | 2 +- .../config/controller/PhabricatorConfigConsoleController.php | 4 ++-- .../repository/storage/PhabricatorRepositoryCommit.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/applications/auth/controller/PhabricatorAuthStartController.php b/src/applications/auth/controller/PhabricatorAuthStartController.php index 7e9b17feff..0c42f53556 100644 --- a/src/applications/auth/controller/PhabricatorAuthStartController.php +++ b/src/applications/auth/controller/PhabricatorAuthStartController.php @@ -252,7 +252,7 @@ final class PhabricatorAuthStartController $message = pht( 'ERROR: You are making a Conduit API request to "%s", but the correct '. - 'HTTP request path to use in order to access a COnduit method is "%s" '. + 'HTTP request path to use in order to access a Conduit method is "%s" '. '(for example, "%s"). Check your configuration.', $request_path, $conduit_path, diff --git a/src/applications/config/controller/PhabricatorConfigConsoleController.php b/src/applications/config/controller/PhabricatorConfigConsoleController.php index b8eae9c213..0528be347a 100644 --- a/src/applications/config/controller/PhabricatorConfigConsoleController.php +++ b/src/applications/config/controller/PhabricatorConfigConsoleController.php @@ -56,7 +56,7 @@ final class PhabricatorConfigConsoleController ->setBorder(true); $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Phabricator Configuation')) + ->setHeaderText(pht('Phabricator Configuration')) ->setBackground(PHUIObjectBoxView::WHITE_CONFIG) ->setObjectList($menu); @@ -72,7 +72,7 @@ final class PhabricatorConfigConsoleController ->setFooter($launcher_view); return $this->newPage() - ->setTitle(pht('Phabricator Configuation')) + ->setTitle(pht('Phabricator Configuration')) ->setCrumbs($crumbs) ->appendChild($view); } diff --git a/src/applications/repository/storage/PhabricatorRepositoryCommit.php b/src/applications/repository/storage/PhabricatorRepositoryCommit.php index 31413ea0c2..0303e36919 100644 --- a/src/applications/repository/storage/PhabricatorRepositoryCommit.php +++ b/src/applications/repository/storage/PhabricatorRepositoryCommit.php @@ -714,8 +714,8 @@ final class PhabricatorRepositoryCommit if (!$path) { throw new Exception( pht( - 'This commit ("%s") is associated with a repository ("%s") that '. - 'with a remote URI ("%s") that does not appear to be hosted on '. + 'This commit ("%s") is associated with a repository ("%s") which '. + 'has a remote URI ("%s") that does not appear to be hosted on '. 'GitHub. Repositories must be hosted on GitHub to be built with '. 'CircleCI.', $commit_phid, From 14c516b7a1097cab000951e3660491a1bfbb3211 Mon Sep 17 00:00:00 2001 From: Christopher Speck Date: Sun, 27 Jun 2021 22:30:11 -0400 Subject: [PATCH 005/134] Updating the filtering of Mercurial debug output Summary: With newer versions of Mercurial come newer debug messages which need filtered out. 1. In the scenario of Phabricator observing a hosted Mercurial repository which exists on a server in a multi-user environment it's possible that a repository computes branch cache at a tip revision which is not present. When this happens Mercurial will include in the debug output this information. This message indicates that the cache is going to be re-computed. See https://www.mercurial-scm.org/pipermail/mercurial/2014-June/047239.html. 2. Likely in some version with added or improved support for `pager` the debug info seems to indicate when a pager is being invoked for a command. This seems to print out regularly despite piping the stdout. 3. If the repository on Phabricator ever had the `largefiles` extension enabled then some additional details about "updated patterns" will print out. Test Plan: I verified an observed repository's history could be browsed, specifically the history of files which previously resulted in "Undefined offset: 1". Added a unit test to check the results of `filterMercurialDebugOutput()`. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Differential Revision: https://secure.phabricator.com/D21677 --- src/__phutil_library_map__.php | 2 + .../DiffusionHistoryQueryConduitAPIMethod.php | 9 ++++ .../DiffusionMercurialCommandEngine.php | 24 +++++++++++ .../DiffusionMercurialCommandEngineTests.php | 42 +++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 src/applications/diffusion/protocol/__tests__/DiffusionMercurialCommandEngineTests.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 663c64fff9..2c5bb3341f 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -904,6 +904,7 @@ phutil_register_library_map(array( 'DiffusionLowLevelResolveRefsQuery' => 'applications/diffusion/query/lowlevel/DiffusionLowLevelResolveRefsQuery.php', 'DiffusionMercurialBlameQuery' => 'applications/diffusion/query/blame/DiffusionMercurialBlameQuery.php', 'DiffusionMercurialCommandEngine' => 'applications/diffusion/protocol/DiffusionMercurialCommandEngine.php', + 'DiffusionMercurialCommandEngineTests' => 'applications/diffusion/protocol/__tests__/DiffusionMercurialCommandEngineTests.php', 'DiffusionMercurialFileContentQuery' => 'applications/diffusion/query/filecontent/DiffusionMercurialFileContentQuery.php', 'DiffusionMercurialFlagInjectionException' => 'applications/diffusion/exception/DiffusionMercurialFlagInjectionException.php', 'DiffusionMercurialRawDiffQuery' => 'applications/diffusion/query/rawdiff/DiffusionMercurialRawDiffQuery.php', @@ -7041,6 +7042,7 @@ phutil_register_library_map(array( 'DiffusionLowLevelResolveRefsQuery' => 'DiffusionLowLevelQuery', 'DiffusionMercurialBlameQuery' => 'DiffusionBlameQuery', 'DiffusionMercurialCommandEngine' => 'DiffusionCommandEngine', + 'DiffusionMercurialCommandEngineTests' => 'PhabricatorTestCase', 'DiffusionMercurialFileContentQuery' => 'DiffusionFileContentQuery', 'DiffusionMercurialFlagInjectionException' => 'Exception', 'DiffusionMercurialRawDiffQuery' => 'DiffusionRawDiffQuery', diff --git a/src/applications/diffusion/conduit/DiffusionHistoryQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionHistoryQueryConduitAPIMethod.php index 8c53ff0555..5fa74d2e28 100644 --- a/src/applications/diffusion/conduit/DiffusionHistoryQueryConduitAPIMethod.php +++ b/src/applications/diffusion/conduit/DiffusionHistoryQueryConduitAPIMethod.php @@ -166,6 +166,15 @@ final class DiffusionHistoryQueryConduitAPIMethod $last = null; foreach (array_reverse($lines) as $line) { + // In the event additional log output is included in future mercurial + // updates, if the line does not contain any semi-colon then log it and + // ignore it. + if (strpos($line, ';') === false) { + phlog(pht( + 'Unexpected output from mercurial "log --debug" command: %s', + $line)); + continue; + } list($hash, $parents) = explode(';', $line); $parents = trim($parents); if (!$parents) { diff --git a/src/applications/diffusion/protocol/DiffusionMercurialCommandEngine.php b/src/applications/diffusion/protocol/DiffusionMercurialCommandEngine.php index 03705ad49d..dc898f81d4 100644 --- a/src/applications/diffusion/protocol/DiffusionMercurialCommandEngine.php +++ b/src/applications/diffusion/protocol/DiffusionMercurialCommandEngine.php @@ -71,12 +71,36 @@ final class DiffusionMercurialCommandEngine // // Separately, it may fail to write to a different branch cache, and may // encounter issues reading the branch cache. + // + // When Mercurial repositories are hosted on external systems with + // multi-user environments it's possible that the branch cache is computed + // on a revision which does not end up being published. When this happens it + // will recompute the cache but also print out "invalid branch cache". + // + // https://www.mercurial-scm.org/pipermail/mercurial/2014-June/047239.html + // + // When observing a repository which uses largefiles, the debug output may + // also contain extraneous output about largefile changes. + // + // At some point Mercurial added/improved support for pager used when + // command output is large. It includes printing out debug information that + // the pager is being started for a command. This seems to happen despite + // the output of the command being piped/read from another process. + // + // When printing color output Mercurial may run into some issue with the + // terminal info. This should never happen in Phabricator since color + // output should be turned off, however in the event it shows up we should + // filter it out anyways. $ignore = array( 'ignoring untrusted configuration option', "couldn't write revision branch cache:", "couldn't write branch cache:", 'invalid branchheads cache', + 'invalid branch cache', + 'updated patterns: .hglf', + 'starting pager for command', + 'no terminfo entry for', ); foreach ($ignore as $key => $pattern) { diff --git a/src/applications/diffusion/protocol/__tests__/DiffusionMercurialCommandEngineTests.php b/src/applications/diffusion/protocol/__tests__/DiffusionMercurialCommandEngineTests.php new file mode 100644 index 0000000000..e89125c5d9 --- /dev/null +++ b/src/applications/diffusion/protocol/__tests__/DiffusionMercurialCommandEngineTests.php @@ -0,0 +1,42 @@ +assertEqual('', $filtered_output); + + // The output that should make it through the filtering + $output = + "0b33a9e5ceedba14b03214f743957357d7bb46a9;694". + ":8b39f63eb209dd2bdfd4bd3d0721a9e38d75a6d3". + "-1:0000000000000000000000000000000000000000\n". + "8b39f63eb209dd2bdfd4bd3d0721a9e38d75a6d3;693". + ":165bce9ce4ccc97024ba19ed5a22f6a066fa6844". + "-1:0000000000000000000000000000000000000000\n". + "165bce9ce4ccc97024ba19ed5a22f6a066fa6844;692:". + "2337bc9e3cf212b3b386b5197801b1c81db64920". + "-1:0000000000000000000000000000000000000000\n"; + + $filtered_output = + DiffusionMercurialCommandEngine::filterMercurialDebugOutput($output); + + $this->assertEqual($output, $filtered_output); + } + +} From 5521f76fe406338e4f42404fc98436817ae138cb Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 30 Jun 2021 15:19:38 -0700 Subject: [PATCH 006/134] Remove some "Phacility" and "epriestley" references Summary: Ref T13658. This just scrubs some of the simple references from the codebase. Most of what's left is in documentation which won't be relevant for a fork and/or which I need to separately revise (or more-or-less delete) at some point anyway. I removed the "install RHEL" and "install Ubuntu" scripts outright since I don't have any reasonable way to test them and don't plan to maintain them. Test Plan: Grepped for "phacility", "epriestley"; ran unit tests. Reviewers: cspeckmim Reviewed By: cspeckmim Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13658 Differential Revision: https://secure.phabricator.com/D21678 --- NOTICE | 2 +- resources/celerity/map.php | 20 +-- .../sql/patches/20131004.dxreviewers.php | 3 +- scripts/install/install_rhel-derivs.sh | 138 ------------------ scripts/install/install_ubuntu.sh | 117 --------------- .../util/__tests__/AlmanacNamesTestCase.php | 2 +- .../base/PhabricatorApplication.php | 5 +- .../calendar/parser/ics/PhutilICSWriter.php | 6 +- .../ics/__tests__/PhutilICSWriterTestCase.php | 6 + .../ics/__tests__/data/writer-christmas.ics | 2 +- .../__tests__/data/writer-office-party.ics | 2 +- .../data/writer-recurring-christmas.ics | 2 +- .../ics/__tests__/data/writer-tea-time.ics | 2 +- .../PhabricatorMetaMTAEmailBodyParser.php | 6 +- .../PhabricatorRepositoryPullEngine.php | 1 - .../uiexample/examples/PHUIBadgeExample.php | 4 +- src/docs/user/installation_guide.diviner | 17 +-- src/docs/user/userguide/phame.diviner | 5 +- webroot/rsrc/externals/javelin/lib/DOM.js | 4 +- 19 files changed, 39 insertions(+), 305 deletions(-) delete mode 100755 scripts/install/install_rhel-derivs.sh delete mode 100755 scripts/install/install_ubuntu.sh diff --git a/NOTICE b/NOTICE index 23a28a1e40..f514a400e2 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,7 @@ Phabricator Copyright 2014 Phacility, Inc. -This software is primarily developed and maintained by Phacility, Inc. +Phabricator was originally developed and maintained by Phacility, Inc. http://www.phacility.com/ diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 01ad9da370..f03e9ab399 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -10,7 +10,7 @@ return array( 'conpherence.pkg.css' => '0e3cf785', 'conpherence.pkg.js' => '020aebcf', 'core.pkg.css' => '0ae696de', - 'core.pkg.js' => '68f29322', + 'core.pkg.js' => 'd2de90d9', 'dark-console.pkg.js' => '187792c2', 'differential.pkg.css' => 'ffb69e3d', 'differential.pkg.js' => '8deec4cd', @@ -246,7 +246,7 @@ return array( 'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => 'a9f35511', 'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '3a1b81f6', 'rsrc/externals/javelin/lib/Cookie.js' => '05d290ef', - 'rsrc/externals/javelin/lib/DOM.js' => '94681e22', + 'rsrc/externals/javelin/lib/DOM.js' => 'e4c7622a', 'rsrc/externals/javelin/lib/History.js' => '030b4f7a', 'rsrc/externals/javelin/lib/JSON.js' => '541f81c3', 'rsrc/externals/javelin/lib/Leader.js' => '0d2490ce', @@ -717,7 +717,7 @@ return array( 'javelin-color' => '78f811c9', 'javelin-cookie' => '05d290ef', 'javelin-diffusion-locate-file-source' => '94243d89', - 'javelin-dom' => '94681e22', + 'javelin-dom' => 'e4c7622a', 'javelin-dynval' => '202a2e85', 'javelin-event' => 'c03f2fb4', 'javelin-external-editor-link-engine' => '48a8641f', @@ -1781,13 +1781,6 @@ return array( 'javelin-uri', 'javelin-routable', ), - '94681e22' => array( - 'javelin-magical-init', - 'javelin-install', - 'javelin-util', - 'javelin-vector', - 'javelin-stratcom', - ), '9623adc1' => array( 'javelin-behavior', 'javelin-stratcom', @@ -2167,6 +2160,13 @@ return array( 'javelin-dom', 'phuix-dropdown-menu', ), + 'e4c7622a' => array( + 'javelin-magical-init', + 'javelin-install', + 'javelin-util', + 'javelin-vector', + 'javelin-stratcom', + ), 'e5bdb730' => array( 'javelin-behavior', 'javelin-stratcom', diff --git a/resources/sql/patches/20131004.dxreviewers.php b/resources/sql/patches/20131004.dxreviewers.php index 4f853f5ddc..75a2ba53c1 100644 --- a/resources/sql/patches/20131004.dxreviewers.php +++ b/resources/sql/patches/20131004.dxreviewers.php @@ -29,8 +29,7 @@ foreach (new LiskMigrationIterator($table) as $revision) { foreach ($reviewer_phids as $dst) { if (phid_get_type($dst) == PhabricatorPHIDConstants::PHID_TYPE_UNKNOWN) { // At least one old install ran into some issues here. Skip the row if we - // can't figure out what the destination PHID is. See here: - // https://github.com/phacility/phabricator/pull/507 + // can't figure out what the destination PHID is. continue; } diff --git a/scripts/install/install_rhel-derivs.sh b/scripts/install/install_rhel-derivs.sh deleted file mode 100755 index b5abfbdd25..0000000000 --- a/scripts/install/install_rhel-derivs.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/bash - -confirm() { - echo "Press RETURN to continue, or ^C to cancel."; - read -e ignored -} - -RHEL_VER_FILE="/etc/redhat-release" - -if [[ ! -f $RHEL_VER_FILE ]] -then - echo "It looks like you're not running a Red Hat-derived distribution." - echo "This script is intended to install Phabricator on RHEL-derived" - echo "distributions such as RHEL, Fedora, CentOS, and Scientific Linux." - echo "Proceed with caution." - confirm -fi - -echo "PHABRICATOR RED HAT DERIVATIVE INSTALLATION SCRIPT"; -echo "This script will install Phabricator and all of its core dependencies."; -echo "Run it from the directory you want to install into."; -echo - -RHEL_REGEX="release ([0-9]+)\." - -if [[ $(cat $RHEL_VER_FILE) =~ $RHEL_REGEX ]] -then - RHEL_MAJOR_VER=${BASH_REMATCH[1]} -else - echo "Ut oh, we were unable to determine your distribution's major" - echo "version number. Please make sure you're running 6.0+ before" - echo "proceeding." - confirm -fi - -if [[ $RHEL_MAJOR_VER < 6 && $RHEL_MAJOR_VER > 0 ]] -then - echo "** WARNING **" - echo "A major version less than 6 was detected. Because of this," - echo "several needed dependencies are not available via default repos." - echo "Specifically, RHEL 5 does not have a PEAR package for php53-*." - echo "We will attempt to install it manually, for APC. Please be careful." - confirm -fi - -echo "Phabricator will be installed to: $(pwd)."; -confirm - -echo "Testing sudo/root..." -if [[ $EUID -ne 0 ]] # Check if we're root. If we are, continue. -then - sudo true - SUDO="sudo" - if [[ $? -ne 0 ]] - then - echo "ERROR: You must be able to sudo to run this script, or run it as root."; - exit 1 - fi - -fi - -if [[ $RHEL_MAJOR_VER == 5 ]] -then - # RHEL 5's "php" package is actually 5.1. The "php53" package won't let us install php-pecl-apc. - # (it tries to pull in php 5.1 stuff) ... - yum repolist | grep -i epel - if [ $? -ne 0 ]; then - echo "It doesn't look like you have the EPEL repo enabled. We are to add it" - echo "for you, so that we can install git." - $SUDO rpm -Uvh https://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm - fi - YUMCOMMAND="$SUDO yum install httpd git php53 php53-cli php53-mysql php53-process php53-devel php53-gd gcc wget make pcre-devel mysql-server" -else - # RHEL 6+ defaults with php 5.3 - YUMCOMMAND="$SUDO yum install httpd git php php-cli php-mysql php-process php-devel php-gd php-pecl-apc php-pecl-json php-mbstring mysql-server" -fi - -echo "Dropping to yum to install dependencies..." -echo "Running: ${YUMCOMMAND}" -echo "Yum will prompt you with [Y/n] to continue installing." - -$YUMCOMMAND - -if [[ $? -ne 0 ]] -then - echo "The yum command failed. Please fix the errors and re-run this script." - exit 1 -fi - -if [[ $RHEL_MAJOR_VER == 5 ]] -then - # Now that we've ensured all the devel packages required for pecl/apc are there, let's - # set up PEAR, and install apc. - echo "Attempting to install PEAR" - wget https://pear.php.net/go-pear.phar - $SUDO php go-pear.phar && $SUDO pecl install apc -fi - -if [[ $? -ne 0 ]] -then - echo "The apc install failed. Continuing without APC, performance may be impacted." -fi - -pidof httpd 2>&1 > /dev/null -if [[ $? -eq 0 ]] -then - echo "If php was installed above, please run: /etc/init.d/httpd graceful" -else - echo "Please remember to start the httpd with: /etc/init.d/httpd start" -fi - -pidof mysqld 2>&1 > /dev/null -if [[ $? -ne 0 ]] -then - echo "Please remember to start the mysql server: /etc/init.d/mysqld start" -fi - -confirm - -if [[ ! -e arcanist ]] -then - git clone https://github.com/phacility/arcanist.git -else - (cd arcanist && git pull --rebase) -fi - -if [[ ! -e phabricator ]] -then - git clone https://github.com/phacility/phabricator.git -else - (cd phabricator && git pull --rebase) -fi - -echo -echo -echo "Install probably worked mostly correctly. Continue with the 'Configuration Guide':"; -echo -echo " https://secure.phabricator.com/book/phabricator/article/configuration_guide/"; diff --git a/scripts/install/install_ubuntu.sh b/scripts/install/install_ubuntu.sh deleted file mode 100755 index 7f5f552fdf..0000000000 --- a/scripts/install/install_ubuntu.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/bash - -confirm() { - echo "Press RETURN to continue, or ^C to cancel."; - read -e ignored -} - -INSTALL_URI=" https://phurl.io/u/install" - -failed() { - echo - echo - echo "Installation has failed." - echo "Text above this message might be useful to understanding what exactly failed." - echo - echo "Please follow this guide to manually complete installation:" - echo - echo $INSTALL_URI - echo - echo "We apologize for the inconvenience." - exit 3 -} - -ISSUE=`cat /etc/issue` -if [[ $ISSUE != Ubuntu* ]] -then - echo "This script is intended for use on Ubuntu, but this system appears"; - echo "to be something else. Your results may vary."; - echo - confirm -fi - -echo "PHABRICATOR UBUNTU INSTALL SCRIPT"; -echo "This script will install Apache, Phabricator and its core dependencies."; -echo "Run it from the directory you want to install into."; -echo - -echo "Testing sudo..." -sudo true -if [ $? -ne 0 ] -then - echo "ERROR: You must be able to sudo to run this script."; - exit 1; -fi; - -echo 'Testing Ubuntu version...' - -VERSION=`lsb_release -rs` -MAJOR=`expr match "$VERSION" '\([0-9]*\)'` - -if [ "$MAJOR" -lt 16 ] -then - echo 'This script is intented to install on modern operating systems; Your ' - echo 'operating system is too old for this script.' - echo 'You can still install Phabricator manually - please consult the installation' - echo 'guide to see how:' - echo - echo $INSTALL_URI - echo - exit 2 -fi - -# Ubuntu 16.04 LTS only has php 7.0 in their repos, so they need this extra ppa. -# Ubuntu 17.4 and up have official 7.2 builds. -if [ "$MAJOR" -eq 16 ] -then - echo 'This version of Ubuntu requires additional resources in order to install' - echo 'and run Phabricator.' - echo 'We will now add a the following package repository to your system:' - echo ' https://launchpad.net/~ondrej/+archive/ubuntu/php' - echo - echo 'This repository is generally considered safe to use.' - confirm - - sudo add-apt-repository -y ppa:ondrej/php || failed -fi - -ROOT=`pwd` -echo "Phabricator will be installed to: ${ROOT}."; -confirm - -echo "Installing dependencies: git, apache, mysql, php..."; -echo -sudo apt-get -qq update -sudo apt-get install \ - git mysql-server apache2 libapache2-mod-php \ - php php-mysql php-gd php-curl php-apcu php-cli php-json php-mbstring \ - || failed - -echo "Enabling mod_rewrite in Apache..." -echo -sudo a2enmod rewrite || failed - -echo "Downloading Phabricator and dependencies..." -echo - -if [ ! -e arcanist ] -then - git clone https://github.com/phacility/arcanist.git -else - (cd arcanist && git pull --rebase) -fi - -if [ ! -e phabricator ] -then - git clone https://github.com/phacility/phabricator.git -else - (cd phabricator && git pull --rebase) -fi - -echo -echo -echo "Install probably worked mostly correctly. Continue with the 'Configuration Guide':"; -echo -echo " https://secure.phabricator.com/book/phabricator/article/configuration_guide/"; -echo -echo 'Next step is "Configuring Apache webserver".' diff --git a/src/applications/almanac/util/__tests__/AlmanacNamesTestCase.php b/src/applications/almanac/util/__tests__/AlmanacNamesTestCase.php index 78dea769e4..8c3754ac23 100644 --- a/src/applications/almanac/util/__tests__/AlmanacNamesTestCase.php +++ b/src/applications/almanac/util/__tests__/AlmanacNamesTestCase.php @@ -30,7 +30,7 @@ final class AlmanacNamesTestCase extends PhabricatorTestCase { 'abc' => true, 'a.b' => true, - 'db.phacility.instance' => true, + 'db.companyname.instance' => true, 'web002.useast.example.com' => true, 'master.example-corp.com' => true, diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 407f3171c0..6c5e424bdd 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -135,10 +135,9 @@ abstract class PhabricatorApplication /** - * Returns true if an application is first-party (developed by Phacility) - * and false otherwise. + * Returns true if an application is first-party and false otherwise. * - * @return bool True if this application is developed by Phacility. + * @return bool True if this application is first-party. */ final public function isFirstParty() { $where = id(new ReflectionClass($this))->getFileName(); diff --git a/src/applications/calendar/parser/ics/PhutilICSWriter.php b/src/applications/calendar/parser/ics/PhutilICSWriter.php index c5baa791de..8e7d06804c 100644 --- a/src/applications/calendar/parser/ics/PhutilICSWriter.php +++ b/src/applications/calendar/parser/ics/PhutilICSWriter.php @@ -128,11 +128,15 @@ final class PhutilICSWriter extends Phobject { $properties[] = $this->newTextProperty( 'PRODID', - '-//Phacility//Phabricator//EN'); + self::getICSPRODID()); return $properties; } + public static function getICSPRODID() { + return '-//Phacility//Phabricator//EN'; + } + private function getEventNodeProperties(PhutilCalendarEventNode $event) { $properties = array(); diff --git a/src/applications/calendar/parser/ics/__tests__/PhutilICSWriterTestCase.php b/src/applications/calendar/parser/ics/__tests__/PhutilICSWriterTestCase.php index dec1bf27b0..793afc31f4 100644 --- a/src/applications/calendar/parser/ics/__tests__/PhutilICSWriterTestCase.php +++ b/src/applications/calendar/parser/ics/__tests__/PhutilICSWriterTestCase.php @@ -138,6 +138,12 @@ final class PhutilICSWriterTestCase extends PhutilTestCase { private function assertICS($name, $actual) { $path = dirname(__FILE__).'/data/'.$name; $data = Filesystem::readFile($path); + + $data = str_replace( + '${PRODID}', + PhutilICSWriter::getICSPRODID(), + $data); + $this->assertEqual($data, $actual, pht('ICS: %s', $name)); } diff --git a/src/applications/calendar/parser/ics/__tests__/data/writer-christmas.ics b/src/applications/calendar/parser/ics/__tests__/data/writer-christmas.ics index 4624d151d0..0526034b3f 100644 --- a/src/applications/calendar/parser/ics/__tests__/data/writer-christmas.ics +++ b/src/applications/calendar/parser/ics/__tests__/data/writer-christmas.ics @@ -1,6 +1,6 @@ BEGIN:VCALENDAR VERSION:2.0 -PRODID:-//Phacility//Phabricator//EN +PRODID:${PRODID} BEGIN:VEVENT UID:christmas-day CREATED:20160901T232425Z diff --git a/src/applications/calendar/parser/ics/__tests__/data/writer-office-party.ics b/src/applications/calendar/parser/ics/__tests__/data/writer-office-party.ics index a2fbc81a40..4623e6a11a 100644 --- a/src/applications/calendar/parser/ics/__tests__/data/writer-office-party.ics +++ b/src/applications/calendar/parser/ics/__tests__/data/writer-office-party.ics @@ -1,6 +1,6 @@ BEGIN:VCALENDAR VERSION:2.0 -PRODID:-//Phacility//Phabricator//EN +PRODID:${PRODID} BEGIN:VEVENT UID:office-party CREATED:20161001T120000Z diff --git a/src/applications/calendar/parser/ics/__tests__/data/writer-recurring-christmas.ics b/src/applications/calendar/parser/ics/__tests__/data/writer-recurring-christmas.ics index 2774bb5bb9..d43da0f80c 100644 --- a/src/applications/calendar/parser/ics/__tests__/data/writer-recurring-christmas.ics +++ b/src/applications/calendar/parser/ics/__tests__/data/writer-recurring-christmas.ics @@ -1,6 +1,6 @@ BEGIN:VCALENDAR VERSION:2.0 -PRODID:-//Phacility//Phabricator//EN +PRODID:${PRODID} BEGIN:VEVENT UID:recurring-christmas CREATED:20001225T000000Z diff --git a/src/applications/calendar/parser/ics/__tests__/data/writer-tea-time.ics b/src/applications/calendar/parser/ics/__tests__/data/writer-tea-time.ics index e275fa9730..7d5620e8dc 100644 --- a/src/applications/calendar/parser/ics/__tests__/data/writer-tea-time.ics +++ b/src/applications/calendar/parser/ics/__tests__/data/writer-tea-time.ics @@ -1,6 +1,6 @@ BEGIN:VCALENDAR VERSION:2.0 -PRODID:-//Phacility//Phabricator//EN +PRODID:${PRODID} BEGIN:VEVENT UID:tea-time CREATED:20160915T070000Z diff --git a/src/applications/metamta/parser/PhabricatorMetaMTAEmailBodyParser.php b/src/applications/metamta/parser/PhabricatorMetaMTAEmailBodyParser.php index be0401f066..9b266a3ae7 100644 --- a/src/applications/metamta/parser/PhabricatorMetaMTAEmailBodyParser.php +++ b/src/applications/metamta/parser/PhabricatorMetaMTAEmailBodyParser.php @@ -11,7 +11,7 @@ final class PhabricatorMetaMTAEmailBodyParser extends Phobject { * * Or * - * !assign epriestley + * !assign alincoln * * please, take this task I took; its hard * @@ -20,9 +20,9 @@ final class PhabricatorMetaMTAEmailBodyParser extends Phobject { * commands. For example, this body above might parse as: * * array( - * 'body' => 'please, take this task I took; its hard', + * 'body' => 'please, take this task I took; it's hard', * 'commands' => array( - * array('assign', 'epriestley'), + * array('assign', 'alincoln'), * ), * ) * diff --git a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php index 7d216421d7..12aee9bc51 100644 --- a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php +++ b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php @@ -723,7 +723,6 @@ final class PhabricatorRepositoryPullEngine // This behavior has been reverted, but users who updated between Feb 1, // 2012 and Mar 1, 2012 will have the erroring version. Do a dumb test // against stdout to check for this possibility. - // See: https://github.com/phacility/phabricator/issues/101/ // NOTE: Mercurial has translated versions, which translate this error // string. In a translated version, the string will be something else, diff --git a/src/applications/uiexample/examples/PHUIBadgeExample.php b/src/applications/uiexample/examples/PHUIBadgeExample.php index 703595b76c..c001a3c751 100644 --- a/src/applications/uiexample/examples/PHUIBadgeExample.php +++ b/src/applications/uiexample/examples/PHUIBadgeExample.php @@ -19,7 +19,7 @@ final class PHUIBadgeExample extends PhabricatorUIExample { $badges1 = array(); $badges1[] = id(new PHUIBadgeView()) ->setIcon('fa-users') - ->setHeader(pht('Phacility High Command')) + ->setHeader(pht('High Command')) ->setHref('/') ->setSource('Projects (automatic)') ->addByline(pht('Dec 31, 1969')) @@ -113,7 +113,7 @@ final class PHUIBadgeExample extends PhabricatorUIExample { ->setHeader(pht('Lead Developer')) ->setSubhead(pht('Lead Developer of Phabricator')) ->setQuality(PhabricatorBadgesQuality::HEIRLOOM) - ->setSource(pht('Direct Award (epriestley)')) + ->setSource(pht('Direct Award')) ->addByline(pht('Dec 31, 1969')) ->addByline('1 Awarded (0.4%)'); diff --git a/src/docs/user/installation_guide.diviner b/src/docs/user/installation_guide.diviner index 269b20b62a..d2931fcb49 100644 --- a/src/docs/user/installation_guide.diviner +++ b/src/docs/user/installation_guide.diviner @@ -102,22 +102,7 @@ your own risk and expect that your skills may be tested. Installing Required Components ============================== -If you are installing on Ubuntu or an RedHat derivative, there are install -scripts available which should handle most of the things discussed in this -document for you: - - - **RedHat Derivatives**: - [[ https://secure.phabricator.com/diffusion/P/browse/master/scripts/install/install_rhel-derivs.sh - | install_rhel-derivs.sh ]] - - **Ubuntu**: - [[ https://secure.phabricator.com/diffusion/P/browse/master/scripts/install/install_ubuntu.sh - | install_ubuntu.sh ]] - -If those work for you, you can skip directly to the -@{article:Configuration Guide}. These scripts are also available in the -`scripts/install` directory in the project itself. - -Otherwise, here's a general description of what you need to install: +Here's a general description of what you need to install: - git (usually called "git" in package management systems) - Apache (usually "httpd" or "apache2") (or nginx) diff --git a/src/docs/user/userguide/phame.diviner b/src/docs/user/userguide/phame.diviner index d42ddc7d23..b0cde513f9 100644 --- a/src/docs/user/userguide/phame.diviner +++ b/src/docs/user/userguide/phame.diviner @@ -84,10 +84,7 @@ External Blogs WARNING: This feature is still a prototype and has some known issues. -You can host a Phame blog on an external domain, like `blog.mycompany.com`. The -Phacility corporate blog is an example of an external Phame blog: - -> https://blog.phacility.com/ +You can host a Phame blog on an external domain, like `blog.mycompany.com`. External blogs are public (they do not require login) and are only supported if your Phabricator install is also public. You can make an install public by diff --git a/webroot/rsrc/externals/javelin/lib/DOM.js b/webroot/rsrc/externals/javelin/lib/DOM.js index e0e3d764e0..7eca573649 100644 --- a/webroot/rsrc/externals/javelin/lib/DOM.js +++ b/webroot/rsrc/externals/javelin/lib/DOM.js @@ -124,7 +124,7 @@ JX.install('HTML', { 'will not do the right thing with this.'); } - // TODO(epriestley): May need to deny