This ("Queued at") looks suspicious:
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
All Stories
Jul 16 2021
Jul 15 2021
Jul 13 2021
In D21685, I've imposed stricter rules for which state transitions are allowed: for example, you can't issue a "pause" command to a build that is already pausing.
Jul 11 2021
There are a bunch of libraries to help with this that I obviously won't be using because I didn't write them...
I think not all versions of Windows + PHP require adjusting php.ini, but some nontrivial subset do -- enough that arc itself emits some flavor of guidance on this:
This is no longer my fight.
One thought here is that updating variables_order is fine on the server, but I really don't want to force arc users to muck with php.ini.
This seems to be resolved already but just wanted to add a note - I believe Windows users currently need to modify php.ini to enable the curl extension for arcanist to work. This is from our internal documentation for installing PHP for arcanist:
Browse to C:\tools\php[some version number]. Edit php.ini as listed below.
- Note: The following modifications remove the semi-colon at the start of the line. Semi-colons are comments in .ini files and these changes are uncommenting and updating the lines.
- Find the line ;extension=curl and remove the semicolon.
- Locate the line ;date.timezone = and replace it with date.timezone = UTC to prevent PHP from yelling at you.
Jul 9 2021
For now, this has been working fine as a simple CLI flow.
Jul 8 2021
Ah okay, I'll do some other testing. I was also wondering if there would be cases in Phabricator where something is doing something like if (get_class($a) == 'PhabricatorEnv') {... which if so I'm guessing would cause failures.
One other case where "Phabricator" appears is in HTTP and Email headers, e.g. X-Phabricator-XYZ. For a separate project wanting to update these I think a slow migration approach is needed, to allow recipients currently expecting the existing fields. I'm guessing there isn't a reasonable change here for the upstream.
Depending on how many of these we end up with, I think an email-header-prefix sort of config option might be reasonable.
Oh and then for existing installs this would just default to X-Phabricator-XYZ to continue with existing behavior?
One other case where "Phabricator" appears is in HTTP and Email headers, e.g. X-Phabricator-XYZ. For a separate project wanting to update these I think a slow migration approach is needed, to allow recipients currently expecting the existing fields. I'm guessing there isn't a reasonable change here for the upstream.
Jul 7 2021
I should probably just set up a blog or something since I don't expect to bring any microcontroller components upstream, but until then:
Jul 1 2021
In T13658#255994, @epriestley wrote:Create Platform::getProjectRepo() to return "phabricator", or instead detect the repository name.
I suspect having this method do anything nontrivial may lead to some weird boostrapping issues, where it gets called very early during startup or with a partially built environment or during exception handling or whatever and not everything you expect to be available is actually available, so I suspect you'll have the best luck by just hard-coding this.
(For example, Phabricator reads PHABRICATOR_INSTANCE from the environment very early.)
Ah I did have a suspicion that would be tricky but was thinking to give it a shot. Hardcoding is probably just going to be easiest.
Jun 30 2021
Proof-of-concept only for class_alias():
This is a bit out there, but: PHP once had something called classkit and later runkit, which perhaps exists as runkit7 now, that let you dynamically rename classes at runtime. In theory, you could use this as a compatibility layer to support mass renaming of classes: if code asks for PhabricatorXYZ, look for GenericXYZ (or XYZ, or consult a mapping), then make a runtime copy of the class. This narrow capability may be in PHP's core as class_alias(), now.
Create Platform::getProjectRepo() to return "phabricator", or instead detect the repository name.
Jun 29 2021
Jun 28 2021
Interestingly this is the output I get when using hg log to print out the commit message containing smart quotes with different encodings -- this behavior is the the same for both PowerShell (chcp 65001) and cmd.exe (chcp 437) and no errors occur.
$ hg log -r tip --template "{desc}" # "default" encoding A test
Jun 27 2021
I think the global flag is reasonable.
In Mercurial, with certain character sets, some arc workflows may fail in arc-hg while trying to perform UTF8 operations.
I'm doing some testing to find an appropriate update to arcanist for this. I ran into another issue, when patching down a revision which has unicode characters in the summary on a windows machine. I could try to whack-a-mole these different issues but since Mercurial's --encoding argument is a global option do you think it would be wise to update ArcanistMercurialAPI::buildLocalFuture() with this?
diff --git a/src/repository/api/ArcanistMercurialAPI.php b/src/repository/api/ArcanistMercurialAPI.php index e5c2078b..ac72c356 100644 --- a/src/repository/api/ArcanistMercurialAPI.php +++ b/src/repository/api/ArcanistMercurialAPI.php @@ -15,7 +15,7 @@ final class ArcanistMercurialAPI extends ArcanistRepositoryAPI { protected function buildLocalFuture(array $argv) { $env = $this->getMercurialEnvironmentVariables();
Jun 25 2021
Jun 24 2021
Jun 17 2021
Jun 16 2021
Jun 9 2021
Jun 8 2021
Jun 7 2021
Jun 5 2021
Jun 4 2021
My company was a loving user of Phabricator (local server!) for over 10 years. I still fondly remember the discussions here and talking through new applications, testing changes, and so much more. I know that the use of this tool permanently shaped hundreds of engineers' views on code quality, review, the software development lifecycle, and so on. It will be missed.
Jun 3 2021
Thank you @epriestley and all of Phacility. Phabricator is a shining example of a well-engineered product that itself encourages better engineering processes and having fun while doing so. I had a great time learning and using Phabricator and it has left a big impact. I only wish I could have been more involved in the development and community. Wishing everyone the best!
@avivey: a few folks have started discussing collaboration in the #phabricator channel on libera.chat irc network.
Jun 2 2021
Thank you @epriestley (and @btrahan, @chad, and others) for the great work done here!
I could not find in the documentation how are we supposed to set a value for a custom field of type "user".
In particular, I am looking at doing this: set the default value to the current user (the user creating the Maniphest task)
Jun 1 2021
This is approximately working now, although the "button" is currently this mess:
See T13656 for followup.
Instances technically have a formal "Deleted" status -- but it isn't really used by anything, nothing ever puts them into that status, and there are no instances in that status. For consistency with existing CLI workflows, I'm going to rename this to "Destroyed".
A related issue is that I think nothing currently destroys S3 data. For most instances this isn't significant, but it isn't helping anything. This should likely be part of the database destruction step, although it can probably interact with the S3 bucket directly.
Since observed repositories version differently today, this strategy won't work -- but I can't come up with any valid reason to ever put a repository into a "write maintenance" mode anyway. I do imagine making observed repositories "replay" fetches into the push log (as though they were pushes) in the future, but that still won't make "write maintenance" on an observed repository meaningful, so it seems fine to just prevent putting non-hosted repositories into this mode.
A minor issue on the way to this is that calling synchronizeWorkingCopyBeforeWrite() with an omnipotent viewer will write to the WorkingCopyVersion table with a null userPHID, which shows as "Unknown Object" in the UI.
A useful maintenance operation for staging area repositories is to remove out-of-date staging refs: old diffs which have already landed. This is of some particular importance for large installs, since Git has a significant per-ref overhead for many operations until protocol v2: by the time a repository has ~50K refs, interacting with it in basically any way has become slow and cumbersome.
Sorry to hear that and hope everything is OK with you @epriestley.
I spent many hours learning from this high-quality code base.
Best of luck in whatever you do in the future.
D21668 should improve this behavior, although it's not an ideal or complete fix.
May 31 2021
Was a pleasure, thank you for this project!
May 30 2021
So long, and thanks for the fishes.
...this would need some kind of smarter scope guard...
I also can't get O_NONBLOCK to survive process exit on macOS. This is possibly because macOS is now zsh, and this RedHat bug suggests that zsh clears O_NONBLOCK:
arc may leave stdout/stderr nonblocking.
I'd be interested in collaborating with anyone who is interested in continuing community-supported maintenance of Phabricator.