Send to Unreal is broken in Blender 4.0 beta, FBX is corrupted/Missing data

Hi. Upon using Push Assets in Blender 4.0 beta, the assets fail to be imported by Unreal, but in Blender 3.6 it works fine.
An export using Blender's built in FBX exporter in 4.0 does import. Just not ones from Push Assets.
Snippet from Unreal output log on import
LogFactory: FactoryCreateFile: StaticMesh with FbxFactory (0 0 C:/Users/funky/AppData/Local/Temp/blender/send2ue/data/StaticMesh/Blender40ExportTest.fbx)
LogFbx: Loading FBX Scene from C:/Users/funky/AppData/Local/Temp/blender/send2ue/data/StaticMesh/Blender40ExportTest.fbx
FBXImport: Warning: FBX Scene Loading Failed : 'File is corrupted Blender40ExportTest.fbx'
FBXImport: Warning: Can't detect import type. No mesh is found or animation track.
LogAssetTools: Warning: Failed to import 'C:/Users/funky/AppData/Local/Temp/blender/send2ue/data/StaticMesh/Blender40ExportTest.fbx'. Failed to create asset '/Game/UNSORTED/Blender40ExportTest'.

Tested with Blender 4.0.0 Beta, and Send to Unreal 2.4.2

Fix worked perfectly. Thank you!
Attaching this because I thought someone would have posted a fixed version in comments, but I didn't see one. Enjoy
send2ue_2.4.3_editedwithfix.zip

Okay the fix works in 4.1 alpha but not on 4.1 beta( throws errror I posted above) .. Still in 4.1 alpha exporting skeletal mesh works fine but exporting animation resulted in the following error..
Python: Traceback (most recent call last):
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\operators.py", line 71, in modal
raise error
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\operators.py", line 61, in modal
function(args, kwargs)
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 265, in export_animation
export_file(properties)
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 166, in export_file
export_fbx_file(file_path, export_settings)
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 83, in export_fbx_file
io.fbx.export(
File "C:\Users****\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\io\fbx.py", line 552, in export
export_fbx_bin.save(self, bpy.context, *keywords)
File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3628, in save
ret = save_single(operator, context.scene, depsgraph, filepath, kwargs_mod)
File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3496, in save_single
scene_data = fbx_data_from_scene(scene, depsgraph, settings)
File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 2867, in fbx_data_from_scene
animations, animated, frame_start, frame_end = fbx_animations(tmp_scdata)
File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 2455, in fbx_animations
fbx_animations_do(scene_data, strip, strip.frame_start, strip.frame_end, True, force_keep=True))
File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\io\fbx.py", line 160, in fbx_animations_do
anim_loc.add_keyframe(real_currframe, loc * location_multiple)
AttributeError: 'AnimationCurveNodeWrapper' object has no attribute 'add_keyframe'. Did you mean: 'set_keyframes'?

Fix worked perfectly. Thank you!
Attaching this because I thought someone would have posted a fixed version in comments, but I didn't see one. Enjoy
send2ue_2.4.3_editedwithfix.zip

Thank you! I had no idea what to do lol

Hi... where can I find the documentation for these tools? Link dead.

Dunno what happened to all the links, hopefully temporarily bug, but videos are still up:

Fix worked perfectly. Thank you!
Attaching this because I thought someone would have posted a fixed version in comments, but I didn't see one. Enjoy
send2ue_2.4.3_editedwithfix.zip

Working on Blender 4.0.1, thank you!

Okay the fix works in 4.1 alpha but not on 4.1 beta( throws errror I posted above) .. Still in 4.1 alpha exporting skeletal mesh works fine but exporting animation resulted in the following error..
Python: Traceback (most recent call last): File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\operators.py", line 71, in modal raise error File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\operators.py", line 61, in modal function(args, kwargs) File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 265, in export_animation export_file(properties) File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 166, in export_file export_fbx_file(file_path, export_settings) File "C:\Users*\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\export.py", line 83, in export_fbx_file io.fbx.export( File "C:\Users****\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\io\fbx.py", line 552, in export export_fbx_bin.save(self, bpy.context, _keywords) File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3628, in save ret = save_single(operator, context.scene, depsgraph, filepath, kwargs_mod) File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3496, in save_single scene_data = fbx_data_from_scene(scene, depsgraph, settings) File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 2867, in fbx_data_from_scene animations, animated, frame_start, frame_end = fbx_animations(tmp_scdata) File "D:\Blender Versions\blender-4.1.0-alpha+main.2b0448c91d7a-windows.amd64-release\4.1\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 2455, in fbx_animations fbx_animations_do(scene_data, strip, strip.frame_start, strip.frame_end, True, force_keep=True)) File "C:\Users_\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\send2ue\core\io\fbx.py", line 160, in fbx_animations_do anim_loc.add_keyframe(real_currframe, loc * location_multiple) AttributeError: 'AnimationCurveNodeWrapper' object has no attribute 'add_keyframe'. Did you mean: 'set_keyframes'?

Also seeing this error on 4.0.2 exporting animations with the mentioned fix.

Trid this and got the following error..
(just the last few lines of error)
File "D:\Blender Versions\blender-4.1.0-beta+v41.c6e229d3e470-windows.amd64-release\blender-4.1.0-beta+v41.c6e229d3e470-windows.amd64-release\4.1\python\Lib\re_parser.py", line 850, in _parse
raise source.error('global flags not at the start '
re.error: global flags not at the start of the expression at position 19

@WindMill90 did you ever find a fix for this one? I get the same using Blender 4.1.1 and Unreal 5.4

@akomili This fork is dead. Here's the up to date fork

@akomili This fork is dead. Here's the up to date fork

What does that mean? Did Epic abandon it? Is there any other changes besides fixing the line of code that stopped it from working?

Yep Epic switched the license to MIT at the beginning of this year and abandoned the project, So we (Polyhammer and myself) have taken the mantle in maintaining it.


Solve Issue, #86 Issue, #113

Solve Issue, #86 - Improved duplicate block detection and removal.
Solve Issue, #113 - Added maxBlocksPerPayment to pool config.

Test Results Below
Zcash_testnet invalid duplicates handled

Zdash livenet duplicates handled, along with maxBlocksPerPayment set to 1

also tested by me on live pool, can be pulled without problems..


Creating new clients in OAuth2 implementation

I've been playing around with Apigility, the framework does a great job. However, I've been trying to figure out how to implement OAuth2 in a mobile application.
After following the OAuth2 implementation guide, I'm now wondering how to create new clients. I have a workflow I think could work well in my mobile app:

User creates a new account (system creates a new client with client_id, password, username, etc - based on OAuth2 example)
User signs in
System returns token
Client uses the token to access the protected API

I would be using the Username and password access for Public Clients (based on the OAuth2 guide in Apigility's website).
The issue here is how to create a new user in the OAuth2 client table, I was expecting a POST request to mydomain.com/oauth/clients but of course that doesn't work.
Whats the right workflow to achieve this in Apigility?

A User has Clients.  The Client table has a reference to User.
This allows one User to have multiple Clients; one per application which implements your API.  This diagram may help but it uses a disconnected User so the relationships to User are not mapped.

I think I haven't got this straight. Users can be a simple service under my API. How do I connect the users with the clients? Is done manually? Do Apigility has a faster way for doing this?

You want specific users to have access to a specific service.  That's not what OAuth2 does.  You will need to authenticate your users against a list of permissioned clients in order to issue an access token.
Look at it this way:  At Facebook if I create a client for my app how do I filter the people that can use my app?  I believe the correct answer is: "I don't".  The Client entity is owned by a user and there is no other security about who can use a client as long as the authorization code handshake can be performed.
A user is connected to a Client through an Authorization Code, Access Token, or Refresh Token.  The user USING the app is linked from one or all of these Tokens.  So given a Client A owned by user 1 where users 2 and 3 are authenticated using the Client A credentials user 1 is the client owner and users 2 and 3 are authorized for Client A.

I think this thread can be closed. Apigility is not what I'm looking for, it'll be better to have more granular control over what's going on behind the stage, Laravel will do the job very well. Thanks!

This repository has been closed and moved to laminas-api-tools/api-tools; a new issue has been opened at https://github.com/laminas-api-tools/api-tools/issues/31.


"Fill Out This Form" for access link is broken.

As an Azure Databricks Customer we are looking to request access to the Lakehouse Monitoring component, however the form on this page is broken and does not work to do so.
"fill out this form"
Thanks

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: f07e5065-abb7-1005-e3e9-3c5dee84a59f
Version Independent ID: f07e5065-abb7-1005-e3e9-3c5dee84a59f
Content: Introduction to Databricks Lakehouse Monitoring - Azure Databricks
Content Source: databricks/lakehouse-monitoring/index.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

@nova-jj
Thanks for your feedback! We will investigate and update as appropriate.

@nova-jj,
you're having trouble with the form on the Lakehouse Monitoring component page. Unfortunately, as an AI language model, I don't have access to the specific form you're referring to. However, I can suggest a few things that might help you get the access you need.
First, have you tried reaching out to Azure Databricks support directly? They may be able to help you with the form or provide an alternative way to request access to the Lakehouse Monitoring component.
If you haven't already, you can also try clearing your browser cache and cookies, or using a different browser to see if that resolves the issue with the form.
If none of these options work, you can try searching for other resources or documentation related to the Lakehouse Monitoring component to see if there are any alternative ways to request access.

@AjayBathini-MSFT I can't repo this. The link works for me so it appears that we don't have anything to fix here. I'm not sure why this link isn't working for the customer. Can you repo this broken link? Is the customer restricted from using Google forms on their corporate VPN?


Query context timeout setting not working

Affected Version
0.21.1
Description
it seems that the query context timeout setting is not well respected. Using pyhton requests library to run an http SCAN query request with stream=True (to have a streaming request and not load in memory the whole response), druid stops the query well before the theorical timeout.
2022-01-25 12:24:49 rune.exceptions.RuneException: [Rune version 10.9.0b2] Unexpected end of stream for query [9838466c-2a93-490e-b317-e235f41a70ae], spent 21.73s for a 30s timeout setting,
and the related druid log for this query

How does the timeout works on the broker ? Is it possible for druid to stop the stream before the timeout value ?

Hello,
I've done some digging and I came across this:
We first set the absolute timeout like this:
https://github.com/apache/druid/blob/ef006fd2571228984b04b95f3a3e2b03d930dce3/processing/src/main/java/org/apache/druid/query/scan/ScanQueryRunnerFactory.java#L94-L97
But we keep shrinking it here:
https://github.com/apache/druid/blob/ef006fd2571228984b04b95f3a3e2b03d930dce3/processing/src/main/java/org/apache/druid/query/scan/ScanQueryEngine.java#L190-L194
I don't understand why, especially that the timeout check is:
https://github.com/apache/druid/blob/ef006fd2571228984b04b95f3a3e2b03d930dce3/processing/src/main/java/org/apache/druid/query/scan/ScanQueryEngine.java#L176-L178
Am I missing something? After commenting out Lines 190 to 194, the query's timeout (As I understand it) seems to be respected. Of course it's always possible to exceed it (while in rowsToList for example if the batchSize is big) but this is another subject which is discussed in https://github.com/apache/druid/issues/1415.
Maybe @jihoonson


Images added to App_Resources not synced

CLI: 6.1.2
Cross-platform modules: 6.1.1
Android Runtime: 6.0.1
iOS Runtime: 6.0.1
Plugin(s): nativescript-app-sync 1.0.5
Xcode 11

Added a new image (.png) to the android & ios App_Resources folder. It worked in the simulator and on device. But after publishing the patch via app-sync, the image did not appear on my device after restarting. Had to upload the image to online service and link it.

I think that’s expected behavior as those files are not part of the app bundle, but rather the native resources/assets. If you move those images to fi. app/images you should be fine.

Ah didn't know that. The main readme tells us that anything innside the app folder is synced.

What can (and will) be AppSync'ed?
Anything inside your /app folder.
Anything inside your /node_modules folder.

Yes, I'll make that more clear then because I didn't mean App_Resources as well (it's not mandatory to have that inside the app folder btw).


webpack & proxy

webpack & proxy

proxy

nginx & proxy

apache & same server

https://zellwk.com/blog/css-conf-china/


Edit master/target folder while rotating

(build 73, for my follow up)
Tested the last source, thank you, looks nearly done
There are still a few unsaved views in Edit master/target folder:

Archive view:

highlighted items in image are lost/reset on rotation

Zip view

password confirmation field is always filled with master pw on rotation. If you let it empty or partially filled while password field is completed: on rotation, the confirmation pw field is completed
select file zip is also reset: browse folders, select an existing zip, rotate and back to portrait: selection is gone, select again the target zip file, press Save, the selected file was not saved and target field is empty

confirmation password

Select Zip file

After rotation: it is unselected and can no longer be saved when selected

After it was reselected again and save: target is empty

Folder path not saved and reset

Select List Folders and browse into folders by clicking the directories
rotate device and back to portrait
press Select
folder shown in browser was not saved

Archived extensions view in landscape

Better to put on separate line even for large devices
Look at this commit which also includes a few margins fixes and remove non adapted devider and use the ZIP_DEFAULT entries
https://github.com/Sentaroh/SMBSync2/pull/78

The problem has been fixed. Please check it out.

Thank you, I tested, we're approaching :-)

Options are saved but only after the first start of app: ZIP, Archive and all other views

exit app
start app
create new task or edit existing one
edit target folder and change all settings
rotate
back to portrait
all fields, checkboxes and spinners are reset, same if you browse folder using List Folders
after that and during all session, it works

Target folder choice is not saved

On create new task, master and target are the same
change target folder
cannot save because warning master and target are the same despite they are not !

double slash in path names

Thank you for your testing.
I can't reproduce your Issue("Options are saved but only after the first start of app: ZIP, Archive and all other views").
1.Initial screen

2.Change all options.

3.Rotate screen to landscape.

4.Rotate screen to portlate

5.After save

6.After save

I am attaching the APK I tested, so please test it.
SMBSync2_debug.zip
Best regards.

Thank you a lot
After a clean and delete build folder it worked properly 👍
All issues are fixed, just a small consistency in layout I will open an issue
Best regards


Board Review: app configuration service data plane library

Service team responsible for the client library: app configuration service
Link to documentation describing the service:   https://docs.microsoft.com/en-us/azure/azure-app-configuration/overview
Contact email (if service team, provide PM and Dev Lead): Ye Gu<EMAIL_ADDRESS>(PM), Zhenlan Wang<EMAIL_ADDRESS>(Dev lead)

About this client library

Name of the client library: azure-appconfiguration (python), Azure.Data.AppConfiguration (.NET), com.azure.data.appconfiguration, @azure/app-configuration (javascript)

Languages for this review: .net, Java, TS, Python

Link to the service REST APIs: https://github.com/jimmyca15/azure-rest-api-specs-pr/blob/AppConfiguration/DataPlane/1_0/specification/appconfiguration/data-plane/Microsoft.AppConfiguration/stable/1.0/appconfiguration.json

Link to the reference documentation:
Python: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/appconfiguration/azure-appconfiguration
.NET: https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/appconfiguration/Azure.Data.AppConfiguration
Java: https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/appconfiguration/azure-data-appconfiguration
Javascript: https://github.com/rparkms/azure-sdk-for-js/tree/master/sdk/appconfiguration/app-configuration

Link to several samples:
Python: https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/appconfiguration/azure-appconfiguration/examples/test_example_configurationservice.py
.NET: https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/appconfiguration/Azure.Data.AppConfiguration/samples
Java: https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration
Javascript: No explicit samples yet, but we have tests: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/appconfiguration/app-configuration/test/index.spec.ts

Champion Scenarios

Champion Scenario 1: Basic CRUD operations to illustrate usage

Describe the champion scenario
In sequence:
--	Set (does a create)
--	List (called Get() in the Track 2 API)
--	Set (does an update)
--	List
--	Delete
--	List

Link to the code sample:
Python:  https://github.com/xiangyan99/azure-sdk-for-python/blob/master/sdk/appconfiguration/azure-appconfiguration/examples/example_crud_operations.py
.NET: https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/appconfiguration/Azure.Data.AppConfiguration/samples/Sample1_HelloWorld.cs
Java: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/HelloWorld.java
Javascript: No explicit samples yet, but we have tests: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/appconfiguration/app-configuration/test/index.spec.ts

Champion Scenario 2: Get a collection of settings

Describe the champion scenario
--	Get a collection of settings
--	Get collections of setting by label

Link to the code sample:
Python: https://github.com/xiangyan99/azure-sdk-for-python/blob/master/sdk/appconfiguration/azure-appconfiguration/examples/example_get_setting_collection.py
.NET: https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/appconfiguration/Azure.Data.AppConfiguration/samples/Sample2_HelloWorldExtended.cs
Javascript: No explicit samples yet, but we have tests: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/appconfiguration/app-configuration/test/index.spec.ts

Scheduled for 9/12


Cannot convert value of type 'DATAStack' to expected argument type 'DataStack'

Trying to performa sync operation and getting the following error:
Cannot convert value of type 'DATAStack' to expected argument type 'DataStack
Sync.changes(data["stations"] as! [[String : Any]], inEntityNamed: "localList", dataStack: coreDataStack) { error in
completion(error)
}

Initializing the dataStack as follows:
var coreDataStack: DATAStack = DATAStack(modelName: "database")

Managed to solve it - DATAStack not needed as an import

<3 I'm glad you got it working


Not found in NPM registry

Hi,
Just tried to install this with ember install ember-cli-reset-scroll and it returned an error saying that it was not found in the registry.
James

Whoops, details :smile: Published now.


CW submit solution: /notify endpoints sometimes returns ::CLOUDFLARE_ERROR_500S_BOX::

This seems to happen occasionally for some katas. I encountered them today so I peeked at the response, and I saw this:

@kazk Looks like the issue happens when user doesn't have a saved session of the kata (by either attempting it the first time or right after solving the kata), then leave the window idle for a long time, and then try to submit.
As a bonus, it also prevents user submission from being saved automatically.


Updated Steam store translation, Neos Photo (screenshot) string translation, addition of withdraw warning into the translation

Translated:

Importer.Image.Screenshot

Updated:

Credits.WithdrawalAddress
Czech store description (paragraph about desktop mode)

(this comment will be updated if more changes will be made before this pull request's merge/closing)
Sorry for the almost week long delay - I was not able to use my computer to prevent data loss from my data HDD, since it was approaching EOL and started to corrupt by itself.

Thank you for the updates! No worries about any delays!


AMI template error for ca-central-1 region

I'm trying to launch the stack in the ca-central-1 region via the link provided from buildkite.com.
https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=buildkite&templateURL=https://s3.amazonaws.com/buildkite-aws-stack/aws-stack.json
After entering information and trying to launch the stack I receive the error message: Template error: Unable to get mapping for AWSRegion2AMI::ca-central-1::AMI
Inspecting aws-stack.json I see on line 504 that AMI ami-0e65b12703691e2e0 is defined for the ca-central-1 region.
Searching community AMIs in ca-central-1 I see this AMI is available.
I'm not very familiar with Cloudformation so am not sure if there's a problem with the stack template, or maybe I'm missing something. Any help would be appreciated. Thank you.

Hi @jmajonis 👋🏻 Apologies, it looks like that link is outdated and is referring to the v3.x url of https://s3.amazonaws.com/buildkite-aws-stack/aws-stack.json. The v4 of the stack moved to a different URL format.
Check out https://github.com/buildkite/elastic-ci-stack-for-aws#getting-started for the latest, which includes ca-central-1.

I've updated the link on the Buildkite Agent AWS setup page to use the correct template. Thanks for pointing it out @jmajonis! I'm going to close this issue, but feel free to re-open if you're still running into the region problems.


Is it a bug？

I want to use RS to auto-make these items in the mod，but when I use TE‘s plate and IE’s stick，they won't be reciped。

Do the is it only that particular combination?  Do the TE plates work with
a known working stick.  Does the stick work with known working plates?

@zmaster587 I seem to be blind because I saw tin plate as iron plate……


Top 8-ing a league is an achievement, create badge

This one is a bit of a hassle because league standings are never stored in the db, they're calculated anew any time anyone views the league.


Wallet goes to 'connected card' state after card programming fails

your phone model and OS version
OnePlus Nord

BoltCardWallet app version (settings->about->scroll down)
v0.1.3

Steps to reproduce:

Add wallet A
Add a card to wallet A
Add wallet B
Try to add the same card to wallet B
Programming the card fails

expected: Wallet B button shows 'Connect Bolt Card'
actual: Wallet B button is 'Bolt Card Details'

There is a similar state change on failing to 'disconnect a card'.


added cli arguments with clap

todo:

more color formats // rgba(r, g, b, a); accept [0.0, 1.0] instead of [0, 255]
add some option to allow the user to pick a specific number of pixels for the shadow offset and padding instead of a ratio
IDK

LGTM, thanks!

:D


when you create a directory while bind-mounting it, it's owned by root

When I'm using user namespaces with docker and I bind-mount a directory into a container with -v but it doesn't exist yet, it gets created for the root user instead of the user that the container is about to run as. I think this is a bug because such a directory is inaccessible to the container, so this behaviour seems unhelpful. It should be created as the container's user.
Output of docker version:
$ docker version
Client:
 Version:      1.11.0-rc3
 API version:  1.23
 Go version:   go1.5.3
 Git commit:   eabf97a
 Built:        Sat Apr  2 08:31:07 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.0-rc3
 API version:  1.23
 Go version:   go1.5.3
 Git commit:   eabf97a
 Built:        Sat Apr  2 08:31:07 2016
 OS/Arch:      linux/amd64

Output of docker info:
$ docker info
Containers: 10
 Running: 8
 Paused: 0
 Stopped: 2
Images: 32
Server Version: 1.11.0-rc3
Storage Driver: aufs
 Root Dir: /var/lib/docker/1000.1000/aufs
 Backing Filesystem: extfs
 Dirs: 123
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 4.4.5-1-docker-aufs
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.709 GiB
Name: compooter
ID: GKSI:YHZC:YPNI:PAGO:EYPD:AYME:K6BY:BAIH:EBKQ:SOAK:WUFP:6MJM
Docker Root Dir: /var/lib/docker/1000.1000
Debug mode (client): false
Debug mode (server): true
 File Descriptors: 59
 Goroutines: 100
 System Time: 2016-04-02T22:06:38.715057195-07:00
 EventsListeners: 0
Username: viktorstanchev

Additional environment details (AWS, VirtualBox, physical, etc.):
physical laptop
Steps to reproduce the issue:

Edit /etc/subuid and /etc/subgid to include dockremap:1000:65536
Start the daemon with --userns-remap default
run docker run --rm -it -v $(pwd)/new:/test busybox sh
run ls -lha new
new is owned by root

Describe the results you received:
The new directory was owned by  root
Describe the results you expected:
The new directory should be owned by the default docker container user
Additional information you deem important (e.g. issue happens only occasionally):
n/a

/cc @estesp I think we fixed this recently for "regular" volumes, but probably not yet for bind-mounted volumes

We've usually shied away from affecting file ownership on the host for user namespaces with the mantra that "user namespaces are an advanced feature" and the admin or creator should consider initial requirements for externally mounted resources (re: ownership, access, etc.).  However, in this case Docker is affecting creation of a new directory on the host, so maybe it is a gray area given we know if the daemon has user mapping enabled?
Of course, the prep requirements for this case could be done here with a small change to startup: mkdir $(pwd)/new && chown 1000:1000 $(pwd)/new and then the same docker run

@estesp perhaps when creating the directory, docker should use what's "root" inside the container, i.e. "root" in a non-userns container, and remapped root if it is?

The workaround is simple and it's not a big issue for anyone. This is my reasoning: There is no use case where one would want to create a directory owned by root and then bind-mount it into a container that can't access it. Therefore, Docker should implement the more common use case of creating a directory owned by the root user of the container by default.


problem with env variable name

While working on the lab I found that "on my PC" :) HOSTNAME is replaced by my real system HOSTNAME.
HOSTNAME variable defined in .env did not overwrite the real HOSTNAME system variable.
The problem disappeared after I changed HOSTNAME=something.ngrok.io to HOSTNAME123=something.ngrok.io and all  process.env.HOSTNAME to process.env.HOSTNAME123

Fixed in next version!
The labs will move to https://github.com/microsoft/app-camp/ - this update adds Teams JavaScript SDK v2 and has other fixes including this one, however the instructions aren't in sync just yet. To resolve this issue, HOSTNAME is now HOST_NAME in the .env file.


Update for ReSharper 2017.3

Updated to wave 11 for ReSharper 2017.3 support.
Incremented version number to 5.3.0
Based this update on top of the still-unmerged ReSharper 2017.2 update #34

i just released my fork to the resharper gallery, because this project seems dead, feel free to contribute to my fork link


[NewChain]: add Aptos support

Motivation
Aptos is a proposed Layer 1 blockchain that uses the Move programming language
The goal is to support the blockchain prior to the main net launch.
Checklist

[ ] Skeleton, registry.json update
[ ] Address support
[ ] Transaction support

[ ] Transfer support
[ ] Token transfer support
[ ] Script/SmartContract support
[ ] BCS serialization support

Resources

Transfer TypeScript example
Transaction Payload
HRP/ChainID format
Official developer doc
BCS Clement implementation
Additional context
There is 3 SDK's: python, rust, typescript

slip44 id: 637, derivation path used in Martian wallet: m/44'/637'/0'/0'/0'

Openning another issue for aptos staking


firefox 57 does not play normally

When I use wfs.js to receive h.264 stream by websocket, firefox plays video faster than 1.0 speed, and endOfStream() function make it restart from begging.
How can I prevent it ?

I have figured it out.
If you delete the firefox specific code, which make video restart form beginning, in onSBUpdateEnd, you will find out that video might stop when the network is slow. Normally video should resume automatically after a while when sufficient data are buffered. However in firefox, it just stop permanently.
If you look closer, you will also find that when this happen, the currentTime property still updates normally and  the 'pause' button still here. When you look at the GPU, you will notice an abnormally high GPU consumption, 100% in my computer, much higher than normal case.
So I think this might relate to firefox's hardware acceleration then I turned it off and you know what? problem solved.
If you really want to use hardware acceleration you can apply some cache buffer, in my case I changed the code in onH264DataParsing to:
this._parseAVCTrack(event.data);
      if (this.browserType === 1) {
        // Firefox
        if (this._avcTrack.samples.length >= 3) {
          this.remuxer.pushVideo(0, this.sn, this._avcTrack, this.timeOffset, this.contiguous);
          this.sn += 1;
        }
      } else {
        if (this._avcTrack.samples.length >= 20) {
          this.remuxer.pushVideo(0, this.sn, this._avcTrack, this.timeOffset, this.contiguous);
          this.sn += 1;
        }
      }

Thanks for the update on the issue.You may submit a pull request. :)


Bug 2089696: Fixing lifecycle availablity for DaemonSet

Lifecycle availabilty function is looking at template-generation
annotation on the DaemonsSet. This annotation is set after creation
of the DS by the DS controller. Since poll package uses the unstructured
created via helm, the code needs to update it with the annotation taken
from cluster

/assign @ybettan

/lgtm

/lgtm

/test e2e-aws-ocp


⚠ Secret Website 3 has degraded performance

In 31ec6e9, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2237 ms

Resolved: Secret Website 3 performance has improved in fcab29a.


Bump chart version to v0.1.2

bump chart version for releasing https://github.com/dagger/dagger/pull/7176

Released! https://github.com/dagger/dagger/pkgs/container/dagger-helm/207953084?tag=0.1.2


JSON.parse is not supposed to return any

TypeScript Version:  3.1.0-dev.20180828
Search Terms: JSON parse type any
Code
JSON.parse // is expected to return "any"

Expected behavior:
JSON parse spec expect it to return object |  number | string | boolean | null
Actual behavior:
JSON parse implementation at lib/lib.es5.d.ts expect it to return any

Maybe unknown is more correct

Assuming no receiver parameter was passed, you could express it more exactly using something like this (which has been proposed before, I think):
type JSONValue = string | number | boolean | null | JSONObject | JSONArray;
interface JSONObject { [key: string]: JSONValue; }
interface JSONArray extends Array<JSONValue> { }

But how useful would that be?  I think most code wouldn't want a structure like this, unless you wrote a library that was specifically for making modifications on the structure of any JSON.  In most realistic use cases, you're going to want to cast the return of JSON.parse to a type specific for your application, probably using runtime checks and type guards along the way.  In those cases you want any or maybe unknown (see https://github.com/Microsoft/TypeScript/issues/26188)

But how useful would that be? I think most code wouldn't want a structure like this, unless you wrote a library that was specifically for making modifications on the structure of any JSON. In most realistic use cases, you're going to want to cast the return of JSON.parse to a type specific for your application, probably using runtime checks and type guards along the way. In those cases you want any or maybe unknown

This is exactly correct

As mentioned in #26188 and several other places, returning any from JSON.parse is not correct. According to the spec and the practice JSON.parse returns a more specialized range of types than any implies - it's even more specialized than unknown implies when there is no reviver function.
To be clear: JSON.parse(string) cannot and will not ever return a Buffer, Error, or any such data structures. Thus we can make SOME assumptions about its output. That said, adding a reviver function breaks the rule and I don't see a way to infer the resulting data structure.
To handle all this we could have two signatures for JSON.parse:

JSON.parse(text: string): JsonType - Parses a stringified JSON value into a JSON data structure. The user may want to specialize the output, and they can via casting and checks, but the default is now at least clear and correct.
JSON.parse(text: string, reviver: (key: string, value: JsonType) => unknown): unknown - Parses a stringified JSON value, but makes no assumptions about the structure of the output since the reviver could mangle the output types in many different ways.

JsonType is defined based on the JSON spec, and there are several well-stated type unions that express the concept.
Some may be frustrated by the compiler telling them that they really don't know the type returned. That's understandable: all of us had to unlearn bad habits when we went from JavaScript to TypeScript.
All that said, I'd REALLY appreciate JSON.parse returning unknown rather than any if the more complex JSON types are too mush - after all that's WHY I choose TypeScript over raw JavaScript: the former gives me a layer of type safety that yells at me in the compiler if I do something stupid. As it stands JSON.parse('[]').notexist is a runtime error instead of a compiler error.
Yes this would be a breaking change. But a welcome one. It could also be behind a flag like the change to catch so that it could be introduced in a minor version.
As an aside, the project ts-reset provides a quick hack workaround/prototype of some of this plus a few other cases. However its opt-in mechanism means that it can't be used in libraries. 😢


Add GH actions

Modernize JWPL by upgrading parent to 29
Allow building with Java 11+
Add GH actions
(cherry picked from commit 7d8b6c32b561b81699585e14b2b8ab9089707afa)

Can one of the admins verify this patch?

Looks like this doesn't run, too.


Compatibility with webreflection/document-register-element

cc @webreflection in case you're interested

what's the current "incompatibility" if I might ask?
is this about using alternatively my polyfill instead of the web components one?

what's the current "incompatibility" if I might ask?

The one I've just fixed would be that Skate also uses v0 if available and had defined createdCallback et al in it's Component base class to be called in v0-land. Your fill defined this on the element that gets returned from super() and when I tried to call it, it was calling yours instead of mine. I've just moved the logic in to a separate function to get around it. There's some others and I'll annotate those as I go along.

is this about using alternatively my polyfill instead of the web components one?

Quite possibly, but either way it'd be nice to support both so we can direct Skate users to polyfills that fit their needs. There's still a few things we would need to consider before including it with skatejs/web-components by default. Some things I haven't measured yet are performance and size.

I've just moved the logic in to a separate function to get around it.
that part changed already locally to indeed avoid overrides when already defined.

You should've filed a bug in my repo ;-) sorry for the inconvenience.

You should've filed a bug in my repo ;-) sorry for the inconvenience.

I don't really consider it a bug with your repo, though. We should be being defensive about this anyways.
If I do find what I think are legitimate bugs, of course I'll file them with you repo.

let me know if there's anything else I can help with

Sure, thing. Thanks for responding :)

@WebReflection in https://github.com/WebReflection/document-register-element/pull/67#issuecomment-242031456 you mentioned FF still had some issues? I'm currently seeing some issues where the call to nodeNames.get() returns undefined at https://github.com/WebReflection/document-register-element/blob/master/src/document-register-element.js#L896. I'm still debugging the issue (could be my fault), but maybe this is something you've already seen?

please try its latest and let me know . FF Nightly breaks V0 incapable of accepting a string as second argument + other breaks. FF Desktop also has some glitch but right now I have no time to debug it.

FYI I've apparently fixed every FireFox hiccup with 1.0.7, you can test pretty much every known browser on this page and see green light: https://webreflection.github.io/document-register-element/test/

IE <= 10 compat blocked by https://github.com/WebReflection/document-register-element/issues/70. Firefox and Chrome are 100% now.

Just opened https://github.com/skatejs/web-components/pull/8.

Workaround for IE fixes was to include the MutationObserver polyfill from webcomponents.js.

💥 IE9 compat with little work. Thanks @WebReflection!


tabindex problems in dialogs and new message form

Several elements in the UI specify a positive tabindex.  This is strongly discouraged by most accessibility guidelines and audit tools, because these elements will appear first in the tab sequence regardless of the natural document order used by all elements without a specific tab index.  If the only purpose of these attributes was to insert the elements in the tab sequence, they should probably be set to "0" instead.  If there was a good reason for choosing a positive tabindex for these elements, it should be clearly explained in the documentation.
Elements which have positive tabindex values:

The settings dialog section labels with "data-section" attributes: your-account, display-settings, organization-settings, etc.
The Stream, Topic, recipient, and message content fields and submit button in the new message form
The "modal-body" tab content divs in the keyboard shortcuts, message formatting, and search operators information dialog

For additional information:

Accessibility Developer Tools notes on positive tabindex values
WebAIM notes on tabindex

@zulipbot label "accessibility"

@zulipbot claim


Grid: Update documentation

Detailed description of how to reproduce the problem
change min-width of xs viewport in table
Upload a screenshot

Describe the development framework
No response
Expected behavior
mind-width:360px for s viewport
Additional information
No response

issue accidently created


create family tree view using BuchheimWalkerAlgorithm?

Hi Brother!,
I'm creating a family tree using BuchheimWalkerAlgorithm, it is possible to get this type of output with separate nodes. Like father mother on the different node but nearest position. Connect from 2 nodes to 1 node.

Help me to find out.
Thank You!

This is not possible at the moment sadly.

@VengaiMovan you can custom a node that included 2 members like that instead of thinking about connecting 2 nodes to 1 node

Same issue here, please add this feature

Same here, hope this feature will be implemented soon.

Better to do what @iamhiutrun suggested, as data wise I want to make generic nodes only, without any child or spouse relation

I have same problem here. Imposible connect to parents to one child. I suggest you this solution, you can get similar behavior but level of generations have problems
` final treeRender = BuchheimWalkerConfiguration()
..subtreeSeparation = (4)
..orientation = (BuchheimWalkerConfiguration.ORIENTATION_TOP_BOTTOM)
..levelSeparation = (28);
final configuration = SugiyamaConfiguration()
  ..bendPointShape = MaxCurvedBendPointShape()
  ..nodeSeparation = (16)
  ..coordinateAssignment = CoordinateAssignment.Average;

final sugiyama =  SugiyamaAlgorithm(configuration,)
  ..renderer = TreeEdgeRenderer(treeRender)
  ..graph = graph;`

@nabil6391 That approach does not solve it, because each spouse has their own tree of ancestors. Even if both spouses were in a single node, that need would still need multiple ancestors (4 grandparents). That approach just "kicks the can down the road".

any solution for that.


Installation TypeError in the extraction_test.py

Hi Could you helpt to fix the installation issue? @tayfunterzi
The directory path is: ROOT_PATH/streamingqa/. The downloaded 4 data files are in the same directory with the extraction_test.py.
Requirement already satisfied: absl-py==1.0.0 in ./streamingqa_env/lib/python3.6/site-packages (from -r requirements.txt (line 7)) (1.0.0)
Requirement already satisfied: appdirs==1.4.4 in ./streamingqa_env/lib/python3.6/site-packages (from -r requirements.txt (line 11)) (1.4.4)
Requirement already satisfied: fs==2.4.15 in ./streamingqa_env/lib/python3.6/site-packages (from -r requirements.txt (line 15)) (2.4.15)
Requirement already satisfied: pytz==2021.3 in ./streamingqa_env/lib/python3.6/site-packages (from -r requirements.txt (line 19)) (2021.3)
Requirement already satisfied: six==1.16.0 in ./streamingqa_env/lib/python3.6/site-packages (from -r requirements.txt (line 25)) (1.16.0)
Requirement already satisfied: setuptools in ./streamingqa_env/lib/python3.6/site-packages (from fs==2.4.15->-r requirements.txt (line 15)) (39.2.0)
Requirement already satisfied: dataclasses in ./streamingqa_env/lib/python3.6/site-packages (0.8)

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/shared/dataset/StreamingQA/streamingqa/extraction_test.py", line 35, in <module>
    @dataclasses.dataclass(frozen=True)
  File "/shared/dataset/StreamingQA/streamingqa/extraction_test.py", line 37, in _ArchiveFileInput
    docs: list[_WMTDocInput]
TypeError: 'type' object is not subscriptable

Hi @csbobby,
Thanks for reaching out.
Apologies for not declaring it specifically: it looks like we would require Python 3.9 and above. Alternatively if you like, you could either just remove the type annotations or replace them using the typing library, e.g., typing.List.
Let me know if that doesn't work for you.
Cheers,
Tayfun

Thank you. It does not report the error after using a new virtual env with py3.9 instead of the default "streamingqa_env" in the repo.
The extraction_test has other errors

where are the links of the mentioned files in the extraction_test.py (such as deduplicated_wmt_sorting_keys_file_name = 'wmt_ids.gz', archive_file_input.file_namesnews-docs.2019.en.filtered.gz or news-docs.2020.en.filtered.gz) ?

The extraction_test reports another issue:

Requirement already satisfied: dataclasses in ./sqa_env/lib/python3.9/site-packages (0.6)
Running tests under Python 3.9.16: /shared/dataset/StreamingQA/streamingqa/sqa_env/bin/python3
[ RUN      ] ExtractionTest.test_get_wmt_docs_from_archive_file_paths
[       OK ] ExtractionTest.test_get_wmt_docs_from_archive_file_paths
[ RUN      ] ExtractionTest.test_get_wmt_passages_from_docs
[  FAILED  ] ExtractionTest.test_get_wmt_passages_from_docs
======================================================================
FAIL: test_get_wmt_passages_from_docs (__main__.ExtractionTest)
ExtractionTest.test_get_wmt_passages_from_docs
----------------------------------------------------------------------
Traceback (most recent call last):
  File "shared/dataset/StreamingQA/streamingqa/extraction_test.py", line 150, in test_get_wmt_passages_from_docs
    self.assertEqual([
AssertionError: Lists differ: [WMTP[23 chars]xt=b'Thursday, January 1, 1970. 1. 2. 3. 4. 5.[66 chars]7.')] != [WMTP[23 chars]xt=b'Wednesday, December 31, 1969. 1. 2. 3. 4.[72 chars]7.')]

First differing element 0:
WMTPa[13 chars]_0_0', text=b'Thursday, January 1, 1970. 1. 2. 3. 4. 5. 6.')
WMTPa[13 chars]_0_0', text=b'Wednesday, December 31, 1969. 1. 2. 3. 4. 5. 6.')

- [WMTPassage(id='doc_0_0', text=b'Thursday, January 1, 1970. 1. 2. 3. 4. 5. 6.'),
?                                  ^^^^      ^^^^^ ^^     ^^

+ [WMTPassage(id='doc_0_0', text=b'Wednesday, December 31, 1969. 1. 2. 3. 4. 5. 6.'),
?                                  ^^^^^      ^^^^^^^ ^^     ^^

-  WMTPassage(id='doc_0_1', text=b'Thursday, January 1, 1970. 7.')]
?                                  ^^^^      ^^^^^ ^^     ^^

+  WMTPassage(id='doc_0_1', text=b'Wednesday, December 31, 1969. 7.')]
?                                  ^^^^^      ^^^^^^^ ^^     ^^

----------------------------------------------------------------------
Ran 2 tests in 0.004s

FAILED (failures=1)

Hi @csbobby,
You can find the needed WMT files following the link and instruction as shown in the README under the WMT header (https://github.com/google-deepmind/streamingqa#wmt). For instance, I can see the right files at the Index of .../news-crawl/doc/en/ as instructed via the link.
The other files you need you'll also find in the README under the Download header at https://github.com/google-deepmind/streamingqa#download. The rightmost column "Download" provides the links for these.
For your failing tests, it looks like we omitted specifically declaring the UTC time zone when creating the datetime object from timestamp. I'll modify the code and upload it. I hope this should fix it for you.
Cheers,
Tayfun


Question: Store pushes async

We are in the process of upgrading to the latest version of simple store, and noticed that all of our tests started failing because of the introduction of a schedule to the push and clear methods of the store.
Any thoughts on making that synchronous in test mode?

In the v4 upgrade guide I show a helper that made the upgrade less painful for a client I was working with last year. The push api is async because the v4 release was all about performance /better scheduling.
https://github.com/toranb/ember-cli-simple-store/issues/50


Architectural overview

We need a section describing the overall architecture of the system.

Document was added in previous PR: https://github.com/qir-alliance/qat/blob/main/docs/src/DeveloperGuide/ArchitectureOverview.md


Little update

Hi !
A little contribution to this nice tool : move to yt-dlp and solve download speed problems (playlists in my case)
Regards !
Steph

Should ytdl.reg be renamed to ytdlp.reg? Not sure what else has to be changed to accommodate for this, but I think it would be good for clarity.


pull: allow to pull from merge commits

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

@sjackman I adapted this from the code we had in Linuxbrew (I moved the change to a better place though).
@MikeMcQuaid As we use often use merge commits, I need to be able to pull them. Until now I was using an older copy of Linuxbrew to get things done, but as we will have soon migrated everything I need to be able to pull these pull requests.
I admit that there may be a need to refactor this. Maybe I could also add a test that checks if I am able to pull a merge commit. Though I may need to use a linuxbrew-core URL for that test.

I changed the code a little bit more, because I forgot to test the case where I was pulling bottles with the --bottle flag.
Here is the output I get after this change:
brew pull --clean --bottle --warn-on-publish-failure --bintray-org=linuxbrew https://github.com/Linuxbrew/homebrew-core/pull/11715
==> jenkins: skipping unneeded bottle.
==> Fast-forwarding to the merge commit
==> Publishing on Bintray: mage 1.8.0
{"files":0}
==> Publishing on Bintray: mariadb:10.1 10.1.38
curl: (22) The requested URL returned error: 404 Not Found

==> No bottle found on Bintray for: mariadb:10.1 10.1.38 - skipping
==> Publishing on Bintray: pixman 0.38.0
{"files":0}
==> Publishing on Bintray: ship 0.33.1
curl: (22) The requested URL returned error: 404 Not Found

==> No bottle found on Bintray for: ship 0.33.1 - skipping
==> Patch changed:
 Formula/jenkins.rb      |  4 ++--
 Formula/mage.rb         | 34 ++++++++++++++++++++++++++++++++++
<EMAIL_ADDRESS>| 10 +++++-----
 Formula/pixman.rb       | 13 +++++++------
 Formula/ship.rb         | 10 +++++-----
 5 files changed, 53 insertions(+), 18 deletions(-)
==> Verifying bottles published on Bintray
Verifying bottle: mage-1.8.0.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
Verifying bottle: pixman-0.38.0.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Published bottles for:
mage pixman

@sjackman I have been using --warn-on-publish-failure. In linuxbrew, you had a different patch that would recalculate the list of formulae that actually needed a bottle pull. To avoid porting that part of the code, I will use --warn-on-publish-failure from now on.
I am just a little bit annoyed that I get the curl errors in the output, not sure how I can avoid that.
@MikeMcQuaid it is expected that not all bottles are built in a merge commit (because our CI sucks, or because there is a new bug somewhere). In that case I pull the bottles that have been built, and open separate pull requests to fix/build the missing ones.
I hope the strategy used for the PatchPuller is fine. We could go for a second round of refactoring and hide more logic inside the PatchPuller. But maybe we should then also rename that class, as it does not only pull patches, but fetches merges commits. Maybe it could be called ChangesPuller?

I forgot another use-case ... merge commits without bottles, like https://github.com/Linuxbrew/homebrew-core/pull/11725
The code is currently quite ugly, I need to refactor this a little bit more. And this needs a little bit more of testing too. I also saw that I broke the test-bot with this change, so I need to address that issue too.
I'll need a little more time for this. You can have a look at the code, but it is definitely not the final version.

FYI, I tried to do something like:
end_revision = Utils.popen_read("git", "rev-parse", merge_commit ? "FETCH_HEAD" : "HEAD")
In the case of FETCH_HEAD, it gives me a commit I can access (using gitk for example); but as soon as you have a fetch inbetween (or some other git calls, nut sure which ones), that commit is gone.
So when you need "FETCH_HEAD", you need to use it as soon as possible. I will try to encapsulate these calls in standalone functions.

In the case of FETCH_HEAD, it gives me a commit I can access (using gitk for example); but as soon as you have a fetch inbetween (or some other git calls, nut sure which ones), that commit is gone.
So when you need "FETCH_HEAD", you need to use it as soon as possible. I will try to encapsulate these calls in standalone functions.

If the ref doesn't have a name, it can be garbage collected. That's shouldn't happen until the SHA1 is more than two weeks old with no name. You can use git fetch origin pull/1234/head:pr-1234 to ensure that it has a name, even if you don't use that name.

Ok, I had a bug and end_revisions needed a .strip to have the right sha1 ... now it works.
I refactored the code so that we have more smaller functions.
One change I may still make: pull_merge_commit(issue, end_revision) has 2 arguments. I can pass these through the PatchPuller constructor. At this point, with all these arguments, I am even think of introducing an intermediate object like a PatchPullerConfig class, to pass the different arguments around. Any opinion on this? We can also keep that for a second PR.

  1) brew pull fetches a patch from a GitHub commit or pull request and applies it
     Failure/Error:
       expect { brew "pull", "1" }
         .to output(/Fetching patch/).to_stdout
         .and output(/Current branch is new\-branch/).to_stderr
         .and be_a_failure

       expected block to output /Fetching patch/ to stdout, but output nothing
     # ./test/dev-cmd/pull_spec.rb:13:in `block (2 levels) in <top (required)>'

This was working, until we changed the repo to linuxbrew-core. Looks like it will ned some more love :)

There is one mac-failure that is unrelated, I will rebase this and re-run the CI:
Failures:

  1) Cask::Pkg#uninstall removes files and dirs referenced by the pkg
     Failure/Error: pkg.uninstall

     ErrorDuringExecution:
       Failure while executing; `/usr/bin/xargs -0 -- /bin/rm --` exited with 1. Here's the output:
       rm: /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/special_file20190302-18852-1hfwnlr: No such file or directory
     # ./system_command.rb:107:in `assert_success'
     # ./system_command.rb:50:in `run!'
     # ./system_command.rb:27:in `run'
     # ./test/support/helper/cask/never_sudo_system_command.rb:5:in `run'
     # ./system_command.rb:31:in `run!'
     # ./cask/pkg.rb:31:in `uninstall'
     # ./test/cask/pkg_spec.rb:22:in `block (3 levels) in <top (required)>'
     # ./test/support/helper/spec/shared_context/homebrew_cask.rb:47:in `block (2 levels) in <top (required)>'
     # ./test/spec_helper.rb:160:in `block (2 levels) in <top (required)>'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:123:in `block in run'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `loop'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `run'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:37:in `block (2 levels) in setup'
     # ./vendor/bundle/ruby/2.3.0/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <top (required)>'

Finished in 3 minutes 41.8 seconds (files took 2.7 seconds to load)
544 examples, 1 failure

Failed examples:

rspec ./test/cask/pkg_spec.rb:7 # Cask::Pkg#uninstall removes files and dirs referenced by the pkg

     1.1) Failure/Error:
            expect { brew "pull", "--bump", "https://api.github.com/repos/Homebrew/homebrew-core/pulls/122" }
              .to output(/Fetching patch/).to_stdout
              .and output(/Can only bump one changed formula/).to_stderr
              .and be_a_failure

            expected block to output /Can only bump one changed formula/ to stderr, but output "fatal: Needed a single revision\nWarning: Current branch is new-branch: do you need to pull inside master?\nError: No changed formulae found to bump\n"
          # ./test/dev-cmd/pull_spec.rb:22:in `block (2 levels) in <top (required)>'
Tests Failed
          # ./test/support/helper/spec/shared_context/integration_test.rb:44:in `block (2 levels) in <top (required)>'
          # ./test/spec_helper.rb:160:in `block (2 levels) in <top (required)>'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:123:in `block in run'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `loop'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `run'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
          # ./test/spec_helper.rb:122:in `block (2 levels) in <top (required)>'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:123:in `block in run'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `loop'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `run'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:37:in `block (2 levels) in setup'
          # ./vendor/bundle/ruby/2.3.0/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <top (required)>'

The interesting part of the output is the following: No changed formulae found to bump.
The test is expecting: Can only bump one changed formula
I do get the wrong error message too locally. But if I try again with the master branch, without my changes, I also get the wrong error message. So for me the initial test is already broken.
We have this on top of the test code:
    CoreTap.instance.path.cd do
      system "git", "init"
      system "git", "checkout", "-b", "new-branch"
    end

How is brew pull --bump https://api.github.com/repos/Homebrew/homebrew-core/pulls/122 supposed to return Can only bump one changed formula in an empty core git repo?

How is brew pull --bump https://api.github.com/repos/Homebrew/homebrew-core/pulls/122 supposed to return Can only bump one changed formula in an empty core git repo?

It fetches https://github.com/Homebrew/homebrew-core/pull/122.patch using curl and see that is has modified five formulae. It doesn't need a git repo for that.
$ curl -Ls https://github.com/Homebrew/homebrew-core/pull/122.patch | diffstat
 cfssl.rb       |    5 +++--
 fontforge.rb   |   12 ++++--------
 godep.rb       |    4 ++--
 letsencrypt.rb |   45 +++++++++++++++++++++++++--------------------
 libuv.rb       |    4 ++--
 5 files changed, 36 insertions(+), 34 deletions(-)

Ok Thanks. I made some progress. I tried the following:
cd /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/
mv homebrew-core homebrew-core2
mkdir homebrew-core
cd homebrew-core
git init
git checkout -b new-branch
git remote add origin https://github.com/Homebrew/homebrew-core
pull --bump https://api.github.com/repos/Homebrew/homebrew-core/pulls/122

Works fine on mac and on Linux with these changes. Is there a way to connect to the azure build with ssh to debug this there? I can not reproduce the failure locally.

Is there a way to connect to the azure build with ssh to debug this there?

No (but it's passing now).

Yes, because I commented out the following line: merge_commit = merge_commit?(url) to see what part of my changes are breaking this. This allowed the tests to pass.
I moved merge_commit = merge_commit?(url) after the orig_revision  and branch variable creation now, to see if this was maybe the problem. I am blindly poking around right now until I get it to work.

expect { brew "pull", "https://github.com/Homebrew/brew/pull/1249" }
      .to output(/Fetching patch/).to_stdout
      .and output(/Patch failed to apply/).to_stderr
      .and be_a_failure

I do not get the logic of that last test. If you run this on mac, I get:
==> Fetching patch
Patch: https://github.com/Homebrew/brew/pull/1249.patch
######################################################################## 100.0%
==> Applying patch
Applying: Revert "Migrate a Formula to Multiple Versions: add docs."
Using index info to reconstruct a base tree...
A	docs/Migrate-A-Formula-To-Multiple-Versions.md
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
==> Patch closes issue #1249
==> Patch changed:

This is not what is expected by the test.
Can somebody run brew pull https://github.com/Homebrew/brew/pull/1249 to see what is the output on mac?
Are the tests run in a specific order? Is there any setup of the repositories done somewhere else? In what state is the main brew repo during the tests?.

Can somebody run brew pull https://github.com/Homebrew/brew/pull/1249 to see what is the output on mac?

❯❯❯ brew pull https://github.com/Homebrew/brew/pull/1249
Warning: Current branch is install_symlink_p: do you need to pull inside master?
==> Fetching patch
Patch: https://github.com/Homebrew/brew/pull/1249.patch
######################################################################## 100.0%
==> Applying patch
Applying: Revert "Migrate a Formula to Multiple Versions: add docs."
Using index info to reconstruct a base tree...
A	docs/Migrate-A-Formula-To-Multiple-Versions.md
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
==> Patch closes issue #1249
==> Patch changed:

Are the tests run in a specific order?

They're run in an arbitrary order, and since they're multithreaded, it can be different each time. Occasionally this difference in order has caused intermittent test failures for me. One intermittent failure in particular involves the style of a temporary shell file failing to lint.

Is there any setup of the repositories done somewhere else? In what state is the main brew repo during the tests?

I believe the tests are all run on fake or repos that are created for the purpose of testing, though I'm not entirely sure where that setup is done.

Integration tests are set up in https://github.com/Homebrew/brew/blob/master/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb

expected block to output /Patch failed to apply/ to stderr, but output "fatal: not a git repository (or any of the parent directories): .git\nfatal: not a git repository (or any of the parent directories): .git\nfatal: not a git repository (or any of the parent directories): .git\nError: Failure while executing; `git fetch --quiet origin pull/1249/head:merge-branch` exited with 128.\n"

fatal: not a git repository It's confusing that it's not being run in a git repo. Tweaking the git commands will have no effect as long as it's not being run in a git repo.

I went for a completely different strategy. The tests will setup fake repositories in /tmp. With the previous logic, the brew pull test will fetch the upstream repo, which is slow (at least on my connection at home).
Instead of fetching the upstream branch to check if it is a merge commit, I am using the github API to check if the “merge” label is set. We automatically set that label for merge commits in linuxbrew-core.
I could also check for the “Merge” word in the pull request title. And maybe make sure the PR is open.
At this point I also could just add a “—merge-commit” flag to brew pull. That would also be a valid strategy, but I would like to avoid the multiplication of flags here ...
Thoughts?

Instead of fetching the upstream branch to check if it is a merge commit, I am using the github API to check if the “merge” label is set. We automatically set that label for merge commits in linuxbrew-core.

This seems a bit error-prone. You can probably use the GitHub API to query if it's a merge commit instead.

This seems a bit error-prone. You can probably use the GitHub API to query if it's a merge commit instead.

Agreed. Now that I have understood how the API works, I changed the code to count the number of parents of the last commit of the pull request (commits are ordered with the last one at the bottom).

One weird thing, if I have more than 30 commits it will not work, for example for https://github.com/Homebrew/linuxbrew-core/pull/12070
The GitHub documentation tells me that it should work for 250 commits: https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request

One weird thing, if I have more than 30 commits it will not work, for example for Homebrew/linuxbrew-core#12070

Perhaps it's paginated? I'm not quite sure how that works. Mike?

Yes, it'll be the pagination.
Honestly this is starting to sound all a bit hacky/unreliable. Could we consider making this workflow just be in Git and splitting the bottle publishing out of this command and into something standalone?

Honestly this is starting to sound all a bit hacky/unreliable. Could we consider making this workflow just be in Git

I can go back to a pure git version. Still need to get the tests going though.

splitting the bottle publishing out of this command and into something standalone?

Should this be done in this PR?

I can go back to a pure git version. Still need to get the tests going though.

At this stage even the pure Git version feels like it might be better placed in another command.

Should this be done in this PR?

Could be or another PR, up to you.

We had a pull-Linux command: https://github.com/Linuxbrew/homebrew-developer/blob/master/cmd/brew-pull-linux.rb
I never used it, it is probably outdated. We could rework it. It will need a little bit of time on my side, I’ll start working on this this week.

The pull-linux command was used interactively. brew pull in this situation is being used by brew test-bot. If there is a separate command, perhaps it could behave similarly to brew update and brew update-reset. This new command could be brew pull-reset, which simply resets to the identified commit, rather than trying to pull the .patch with curl and apply it with git am. As a bonus, it works with merge commits.

brew pull in this situation is being used by brew test-bot

Right, forgot about that.
I rebased this on master. I also went back to the initial solution, which relies only on git.
@MikeMcQuaid I have seen the changes you made in the tests. Do you think this may help here?
cc @jonchang who wanted to test this too.

The failure is…
expected block to output /Patch failed to apply/ to stderr, but output "fatal: not a git repository (or any of the parent directories): .git\nError: Failure while executing; `git fetch --quiet origin pull/1249/head` exited with 128.\n"

https://dev.azure.com/Homebrew/Homebrew/_build/results?buildId=6477&view=logs&jobId=0da5d1d9-276d-5173-c4c4-9d4d4ed14fdb
The test dev-cmd/pull is being run outside of a git repo, and it now needs to run inside a repo. In the function merge_commit?, I don't see where it specifies the location of the git repo. It would help clarify to modify this function (and other new calls to git) to specify the location of the git repo with git -C …. The other existing calls to git don't git -C either though.
https://github.com/Homebrew/brew/pull/5758/files#diff-de3bb69738cf9f6002692059922a16fbR280

@MikeMcQuaid I have seen the changes you made in the tests. Do you think this may help here?

It may do. There's less to go wrong, at least. You may need to rebase on master.

Just to be clear so there's no more unused work in here: I do increasingly think that a separate command is going to be a good idea for this that can be used by test-bot. hub could probably be used for this to simplify a lot of the logic if it was a separate command. Additionally, separating the brew pull logic to get the commits/bottle commits and the actual Bintray publish could also be useful, simplify this code and allow stuff to be reused.

Setting git -C should not be necessary because we cd to the right repository: https://github.com/Homebrew/brew/blob/master/Library/Homebrew/dev-cmd/pull.rb#L122-L127
Looks like the current path is something like /private/tmp/homebrew-tests-20190402-52878-1fn5kvs/prefix after that.  I am trying to find out how this folder is setup now.

Ok I understood what is going on. I was able to setup the tests on my computer and were able to reproduce.
The current test has this code:
CoreTap.instance.path.cd do
  system "git", "init"
  system "git", "checkout", "-b", "new-branch"
end

But the command that is tested is brew pull https://github.com/Homebrew/brew/pull/1249. We are pulling brew here, not homebrew-core.
The output was:
To stderr:
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
Warning: Current branch is : do you need to pull inside master?
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
Error: Patch failed to apply: aborted.

To stdout:
Fetching patch \nPatch: https://github.com/Homebrew/brew/pull/1249.patch\n==> Applying patch\n

So, the initial test had already two issues: the setup was wrong, and the output is full of issues. We are not really testing if brew pull is working correctly, we are barely trying to just run it and looks how it fails when the git context is wrong.
My change in the test: setup the right repository, and change the test check.
The new output will be:
To stderr:
fatal: Needed a single revision
fatal: ambiguous argument 'HEAD^..': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: You have nothing to amend.
Error: Failure while executing; `git commit --amend --signoff --allow-empty -q -m '\n'Closes\\ \\#1249.` exited with 128.

To stdout:
Fetching patch
Patch: https://github.com/Homebrew/brew/pull/1249.patch
==> Applying patch\nApplying: Revert \"Migrate a Formula to Multiple Versions: add docs.\"
Using index info to reconstruct a base tree...
A\tdocs/Migrate-A-Formula-To-Multiple-Versions.md
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
==> Patch closes issue #1249

Not better but at least the test passes now.
@MikeMcQuaid I would like to find a compromise with you: I sort of "need" that patch so I can run merge commits in linuxbrew-core again. This would speed up my linuxbrew-core merging again. Once this is merged, it should free up some time for me to work more on this.
Now that I have digged through this part of the code, I feel more confident about making changes in it. We definitively need better tests here. This can only be done if the code is split and simplified.
I think the first step after this will be to extract my publish_and_check_bottles function to a separate brew command. This would already remove a lot of code from this file, and allow to write separate tests for that part.

Now that I have digged through this part of the code, I feel more confident about making changes in it. We definitively need better tests here. This can only be done if the code is split and simplified.

If we definitely need better tests: they should be added before rather than after making a large change/refactoring like this. Tests do not achieve much by themselves but they do protect you against making changes to code which inadvertently breaks things.

I think the first step after this will be to extract my publish_and_check_bottles function to a separate brew command. This would already remove a lot of code from this file, and allow to write separate tests for that part.

I'd suggest that be done as part of this PR instead.

I would like to find a compromise with you: I sort of "need" that patch so I can run merge commits in linuxbrew-core again. This would speed up my linuxbrew-core merging again. Once this is merged, it should free up some time for me to work more on this.

I appreciate and am sorry from your pain but from my perspective this is a change that's performing a refactoring, adding a feature/functionality and requires modifying the existing, minimal integration test in order to pass. That makes me really uneasy about this not causing additional breakages and this command is extremely critical to all Homebrew formula CI and maintainer workflow.

Ok, I'll work on the refactoring and the addition of more tests. I hope it won't take me as much time as this first set of changes :)

I wrote some tests, and brew style complais about:
.linuxbrew/Homebrew/Library/Homebrew/test/bottle_publisher_spec.rb:5:1: C: Spec path should end with homebrew/bottle_publisher*_spec.rb.
describe Homebrew::BottlePublisher do
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

What does it want from me?

Based on the message, my best guess is that
test/bottle_publisher_spec.rb
should be
test/homebrew/bottle_publisher_spec.rb

Based on the message, my best guess is that
test/bottle_publisher_spec.rb
should be
test/homebrew/bottle_publisher_spec.rb

There are other tests doing exactly the same as I am doing. For example search.spec or missing_formula_spec.rb. There is not homebrew folder in the test folder, so I am not sure this is the right thing to do.

Audit error is unrelated, see #6133

Ok, all green.
I'll squash the latest commits, to boil this down to:

pull: allow to pull from merge commits
pull_spec: fix test
pull: extract bottle publishing code

Code coverage has increased. I am aware that the added tests are not really testing anything interesting, but at least the coverage increased in parts which were not tested before.
@MikeMcQuaid is this going in the right direction? I can add some more tests if you want, need to have a look what can still be done.
I can also extract more code from the main pull code, do we want to do this in the current PR? Just to know where we set the coverage threshold to get this merged.

@iMichka Yes, this seems like a big step in the right direction, nice work!

I can add some more tests if you want, need to have a look what can still be done.

Yes, I think if we're going to be moving code around out of the command (which makes it more generic) that warrants at least a handful of unit (not integration) tests being added for the relevant classes. In this case I think FormulaInfoFromJson would be all that's needed.

I can also extract more code from the main pull code, do we want to do this in the current PR? Just to know where we set the coverage threshold to get this merged.

I'm not so much looking just at a coverage number here but seeing a few unit tests for each added class. Once FormulaInfoFromJson has a few tests I think this is good to go 👍. I'd hold off making any other big changes for a new PR.

expect(described_class.lookup("hello").bottle_info["url"]).to match(HOMEBREW_BOTTLE_DOMAIN)

This supposes that there is alway a bottle for the hello formula. Is this an issue? If yes, we will need to stub that part in a way or another.

brew tests use a dummy loader that has no formulae, and it has no access to Homebrew/core. The formulae used by brew tests need to be stubbed out, using stub_formula_loader.
See for example https://github.com/Homebrew/brew/blob/e098c37dc3734dbe097ed9804a3a88737ff71add/Library/Homebrew/test/tab_spec.rb#L145

stub_formula_loader formula("foo") { url "foo-1.0" }

This does not work, because I need a json file somewhere.
I ran brew info --json=v1 hello and put that in a file.
I also added a new constructor to the FormulaInfo class, which allows me to test all the methods of that class, as the json is now provided by the json file saved in fixtures.
The initial constructor is also tested, using the local hello formula.
I have issues with the style though: how do I disable the style check for the lines in formula_info_spec? The content are strings from the json file, so there is no need to run a style-check on these.

I ran brew info --json=v1 hello and put that in a file.

You definitely don't need a file on disk. You can stub the relevant behaviour instead. See the use of expect in the Library/Homebrew/test/*_spec.rb files.

I have issues with the style though: how do I disable the style check for the lines in formula_info_spec? The content are strings from the json file, so there is no need to run a style-check on these.

You can do this but I think ideally you'd just follow the appropriate style.

I can write something like:
it "checks the bottle_info hash" do
    f = formula "foo" do
      url "foo-1.0"

      bottle do
        cellar(:any)
        sha256(TEST_SHA256 => Utils::Bottles.tag)
      end
    end
    stub_formula_loader f
    expect(
      described_class.lookup("foo"),
    ).to eq(nil)
  end

But lookup("foo") fails to find the formula (actually brew info --json=v1 fails to find the formula). We are calling brew from the outside API here, so I guess that the foo formula is not loaded for that call. Ideally we should not call brew info --json=v1, but call the equivalent brew class/methods?

I have the feeling that I need to use install_test_formula "testball". I simplified the formula_info_spec test to the bare minimum.
described_class.lookup("testball")´ returns nil, which means that Utils.popen_read(HOMEBREW_BREW_FILE, "info", "--json=v1", name)` in the lookup method failed.
Not sure why this is not working. I am really struggling to get a test setup here :(

@iMichka I can take a look at this if that would be useful. Let me know if so (and hold off on making any more changes) and I'll give it a go.

(i.e. I will try and fix this locally and commit a fix to this PR)

Yes please. I would just need an test example for formula_info_spec. Once the look-up method works, I can add the tests for all the other methods.

@iMichka Fixed for you.

install_test_formula is part of integration_test. I can not get rid of that.
I regrouped all the tests in a single test, which brought that specific spec file run from 40 to 12 seconds on my computer.

null
ในวันที่ พฤ. 4 ก.ค. 2019 02:20 น. Michka Popoff<EMAIL_ADDRESS>เขียนว่า:

install_test_formula is part of integration_test. I can not get rid of
that.
I regrouped all the tests in a single test, which brought that specific
spec file run from 40 to 12 seconds on my computer.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Homebrew/brew/pull/5758?email_source=notifications&email_token=AMJAHCDLTV2XCGE4DA32M53P5T3XNA5CNFSM4GX44LF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZFOAWI#issuecomment-508223577,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMJAHCBWZW6Q6LJQQAYLS5TP5T3XNANCNFSM4GX44LFQ
.

@iMichka This finally looks good to go! Good perseverance with this. Merge it at a time you're comfortable and will be around for a while to help deal with e.g. any CI or maintainer hiccups that result. Thanks again for the great work ❤

I'll merge this next week, as I won't have any time this weekend to follow up if this breaks anything.

Congratulations on getting this PR merged, Michka! 🏆


Allow autoselect owner and project of current directory(git repo)

👔 Overview
Usually I work with single github repo at a time and open it in vim. There are also some plugins like vim-fugitive, vim-gitgutter and others that allows working with git itself. As an idea buffers name could be generated based on current information. For example I cloned repo git@github.com:korney4eg/configs.git, here I can see that owner is korney4eg and repo is configs. Using this information it would be much easier to list pull request by typing:
new gh://pr

or something similar.
👖 How to achieve
Try to read current remotes if possible and set appropriate variables.
🧦 Steps

run git remote -v and get owner and repo name
add short form of buffers without owner and repo in their line
if no remote or any other error, then show error in messages and thats all

Thank you for issue, it's seems like good idea :)
I'll consider.

Hey @skanehira , thanks for your work.
Unfortunately for me your changes don't seem to work.
Here is my setup:
NVIM v0.5.0-dev+82100a6bd
Build type: Release
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/clang -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/tmp/neovim-20201215-83436-1xsg4wm/build/config -I/tmp/neovim-20201215-83436-1xsg4wm/src -I/usr/local/include -I/tmp/neovim-20201215-83436-1xsg4wm/deps-build/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/usr/local/opt/gettext/include -I/tmp/neovim-20201215-83436-1xsg4wm/build/src/nvim/auto -I/tmp/neovim-20201215-83436-1xsg4wm/build/include
Скомпилирован<EMAIL_ADDRESS>
Features: +acl +iconv +tui

I have cloned repo git@github.com:learningdevops-makvaz-com/phase02_task02.git
opening README.md in nvim.
If I type: new gh://pulls it doesn't show anything, only opens empty buffer
If I type: new gh://learningdevops-makvaz-com/phase02_task02/pulls it shows me pull requests list.
Thank you in advance.