Ver código fonte

Merge branch 'insider'

Baptiste Augrain 2 anos atrás
pai
commit
e0ce361df9

+ 28 - 8
build/build.sh

@@ -7,8 +7,9 @@
 export APP_NAME="VSCodium"
 export CI_BUILD="no"
 export SHOULD_BUILD="yes"
-export SKIP_BUILD="no"
 export SKIP_ASSETS="yes"
+export SKIP_BUILD="no"
+export SKIP_SOURCE="no"
 export VSCODE_LATEST="no"
 export VSCODE_QUALITY="stable"
 
@@ -26,6 +27,9 @@ while getopts ":ilop" opt; do
     p)
       export SKIP_ASSETS="no"
       ;;
+    s)
+      export SKIP_SOURCE="yes"
+      ;;
   esac
 done
 
@@ -50,13 +54,14 @@ else
 fi
 
 echo "OS_NAME=\"${OS_NAME}\""
+echo "SKIP_SOURCE=\"${SKIP_SOURCE}\""
 echo "SKIP_BUILD=\"${SKIP_BUILD}\""
 echo "SKIP_ASSETS=\"${SKIP_ASSETS}\""
 echo "VSCODE_ARCH=\"${VSCODE_ARCH}\""
 echo "VSCODE_LATEST=\"${VSCODE_LATEST}\""
 echo "VSCODE_QUALITY=\"${VSCODE_QUALITY}\""
 
-if [[ "${SKIP_BUILD}" == "no" ]]; then
+if [[ "${SKIP_SOURCE}" == "no" ]]; then
   rm -rf vscode* VSCode*
 
   . get_repo.sh
@@ -67,13 +72,11 @@ if [[ "${SKIP_BUILD}" == "no" ]]; then
   echo "MS_COMMIT=\"${MS_COMMIT}\"" >> build.env
   echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> build.env
   echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> build.env
-
-  . build.sh
-
-  if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then
-    echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json"
-  fi
 else
+  if [[ "${SKIP_ASSETS}" != "no" ]]; then
+    rm -rf VSCode*
+  fi
+
   . build.env
 
   echo "MS_TAG=\"${MS_TAG}\""
@@ -82,6 +85,23 @@ else
   echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\""
 fi
 
+if [[ "${SKIP_BUILD}" == "no" ]]; then
+  if [[ "${SKIP_SOURCE}" != "no" ]]; then
+    cd vscode || { echo "'vscode' dir not found"; exit 1; }
+
+    git add .
+    git reset -q --hard HEAD
+
+    cd ..
+  fi
+
+  . build.sh
+
+  if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then
+    echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json"
+  fi
+fi
+
 if [[ "${SKIP_ASSETS}" == "no" ]]; then
   if [[ "${OS_NAME}" == "windows" ]]; then
     rm -rf build/windows/msi/releasedir

+ 1 - 1
build/update_api.sh

@@ -30,6 +30,6 @@ fi
 
 APIS=`cat ${DIRECTORY}/resources/app/product.json | jq -r '.extensionEnabledApiProposals'`
 
-APIS=`echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribViewsRemote"]}'`
+APIS=`echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribRemoteHelp", "contribViewsRemote"]}'`
 
 cat <<< $(jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json) > product.json

+ 1 - 1
insider.json

@@ -1,4 +1,4 @@
 {
   "tag": "1.75.0",
-  "commit": "b92894493e6f971a3c71912d823e699d3a05d643"
+  "commit": "e2816fe719a4026ffa1ee0189dc89bdfdbafb164"
 }

+ 3 - 3
install_gh.sh

@@ -1,12 +1,12 @@
 #!/bin/bash
 
-set -e
+set -ex
 
 GH_ARCH="amd64"
 
-VERSION=`curl "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2-`
+VERSION=`curl --retry 12 --retry-delay 30 "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2-`
 
-curl -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
+curl --retry 12 --retry-delay 120 -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
 
 tar xf "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
 

+ 9 - 1
patch.sh

@@ -1,6 +1,10 @@
 #!/bin/bash
 
-FILE="../patches/${1}.patch"
+if [[ "${1}" == *patch ]]; then
+  FILE="../patches/${1}"
+else
+  FILE="../patches/${1}.patch"
+fi
 
 cd vscode || { echo "'vscode' dir not found"; exit 1; }
 
@@ -11,8 +15,12 @@ if [[ -f "${FILE}" ]]; then
   git apply --reject "${FILE}"
 fi
 
+git apply --reject "../patches/helper/settings.patch"
+
 read -p "Press any key when the conflict have been resolved..." -n1 -s
 
+git restore .vscode/settings.json
+
 git add .
 git diff --staged -U1 > "${FILE}"
 

+ 0 - 18
patches/fix-mangle-windows.patch

@@ -1,18 +0,0 @@
-diff --git a/build/lib/compilation.js b/build/lib/compilation.js
-index f26b7ac..15d930c 100644
---- a/build/lib/compilation.js
-+++ b/build/lib/compilation.js
-@@ -109,3 +109,3 @@ function compileTask(src, out, build) {
-             mangleStream = es.through(function write(data) {
--                const newContents = newContentsByFileName.get(data.path);
-+                const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/'));
-                 if (newContents !== undefined) {
-diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
-index 2cc04d2..9029c62 100644
---- a/build/lib/compilation.ts
-+++ b/build/lib/compilation.ts
-@@ -128,3 +128,3 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
- 			mangleStream = es.through(function write(data: File) {
--				const newContents = newContentsByFileName.get(data.path);
-+				const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/'));
- 				if (newContents !== undefined) {

+ 23 - 0
patches/helper/settings.patch

@@ -0,0 +1,23 @@
+diff --git a/.vscode/settings.json b/.vscode/settings.json
+index 7ae8bce..724b9ad 100644
+--- a/.vscode/settings.json
++++ b/.vscode/settings.json
+@@ -9,5 +9,5 @@
+ 		"cli/target": true,
+-		"build/**/*.js": {
+-			"when": "$(basename).ts"
+-		}
++		// "build/**/*.js": {
++		// 	"when": "$(basename).ts"
++		// }
+ 	},
+@@ -81,3 +81,3 @@
+ 	"gulp.autoDetect": "off",
+-	"files.insertFinalNewline": true,
++	// "files.insertFinalNewline": true,
+ 	"[plaintext]": {
+@@ -91,3 +91,3 @@
+ 		"editor.defaultFormatter": "vscode.typescript-language-features",
+-		"editor.formatOnSave": true
++		// "editor.formatOnSave": true
+ 	},

+ 23 - 0
patches/insider/add-remote-url.patch

@@ -0,0 +1,23 @@
+diff --git a/src/vs/workbench/contrib/remote/browser/remote.contribution.ts b/src/vs/workbench/contrib/remote/browser/remote.contribution.ts
+index 63e7f2d..e9a6b7d 100644
+--- a/src/vs/workbench/contrib/remote/browser/remote.contribution.ts
++++ b/src/vs/workbench/contrib/remote/browser/remote.contribution.ts
+@@ -13,2 +13,4 @@ import { RemoteStatusIndicator } from 'vs/workbench/contrib/remote/browser/remot
+ import { AutomaticPortForwarding, ForwardedPortsView, PortRestore } from 'vs/workbench/contrib/remote/browser/remoteExplorer';
++import { CommandsRegistry } from 'vs/platform/commands/common/commands';
++import { localize } from 'vs/nls';
+ 
+@@ -23 +25,13 @@ workbenchContributionsRegistry.registerWorkbenchContribution(AutomaticPortForwar
+ workbenchContributionsRegistry.registerWorkbenchContribution(RemoteMarkers, LifecyclePhase.Eventually);
++
++CommandsRegistry.registerCommand({
++	id: 'remote.serverDownloadUrlTemplate',
++	description: {
++		description: localize('remote.serverDownloadUrlTemplate', 'Provides the url template to download the server archive'),
++		args: [],
++		returns: 'string',
++	},
++	handler: async (_) => {
++		return 'https://github.com/VSCodium/vscodium-insiders/releases/download/${version}.${release}-insider/vscodium-reh-${os}-${arch}-${version}.${release}-insider.tar.gz';
++	}
++});

+ 66 - 0
patches/remove-mangle.patch

@@ -0,0 +1,66 @@
+diff --git a/build/lib/compilation.js b/build/lib/compilation.js
+index 71bc9fb..238a3b9 100644
+--- a/build/lib/compilation.js
++++ b/build/lib/compilation.js
+@@ -20,3 +20,2 @@ const File = require("vinyl");
+ const task = require("./task");
+-const mangleTypeScript_1 = require("./mangleTypeScript");
+ const watch = require('./watch');
+@@ -103,23 +102,3 @@ function compileTask(src, out, build) {
+         }
+-        // mangle: TypeScript to TypeScript
+-        let mangleStream = es.through();
+-        if (build) {
+-            let ts2tsMangler = new mangleTypeScript_1.Mangler(compile.projectPath, (...data) => fancyLog(ansiColors.blue('[mangler]'), ...data));
+-            const newContentsByFileName = ts2tsMangler.computeNewFileContents();
+-            mangleStream = es.through(function write(data) {
+-                const newContents = newContentsByFileName.get(data.path);
+-                if (newContents !== undefined) {
+-                    data.contents = Buffer.from(newContents.out);
+-                    data.sourceMap = newContents.sourceMap && JSON.parse(newContents.sourceMap);
+-                }
+-                this.push(data);
+-            }, function end() {
+-                this.push(null);
+-                // free resources
+-                newContentsByFileName.clear();
+-                ts2tsMangler = undefined;
+-            });
+-        }
+         return srcPipe
+-            .pipe(mangleStream)
+             .pipe(generator.stream)
+diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
+index 8e0f19a..27ea44c 100644
+--- a/build/lib/compilation.ts
++++ b/build/lib/compilation.ts
+@@ -19,4 +19,2 @@ import * as File from 'vinyl';
+ import * as task from './task';
+-import { Mangler } from './mangleTypeScript';
+-import { RawSourceMap } from 'source-map';
+ const watch = require('./watch');
+@@ -123,24 +121,3 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
+ 
+-		// mangle: TypeScript to TypeScript
+-		let mangleStream = es.through();
+-		if (build) {
+-			let ts2tsMangler = new Mangler(compile.projectPath, (...data) => fancyLog(ansiColors.blue('[mangler]'), ...data));
+-			const newContentsByFileName = ts2tsMangler.computeNewFileContents();
+-			mangleStream = es.through(function write(data: File & { sourceMap?: RawSourceMap }) {
+-				const newContents = newContentsByFileName.get(data.path);
+-				if (newContents !== undefined) {
+-					data.contents = Buffer.from(newContents.out);
+-					data.sourceMap = newContents.sourceMap && JSON.parse(newContents.sourceMap);
+-				}
+-				this.push(data);
+-			}, function end() {
+-				this.push(null);
+-				// free resources
+-				newContentsByFileName.clear();
+-				(<any>ts2tsMangler) = undefined;
+-			});
+-		}
+-
+ 		return srcPipe
+-			.pipe(mangleStream)
+ 			.pipe(generator.stream)

+ 28 - 19
patches/use-github-pat.patch

@@ -1,5 +1,5 @@
 diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts
-index e1f766d..4f11dbe 100644
+index 8565178..e35d29f 100644
 --- a/extensions/github-authentication/src/githubServer.ts
 +++ b/extensions/github-authentication/src/githubServer.ts
 @@ -6,4 +6,2 @@
@@ -22,7 +22,7 @@ index e1f766d..4f11dbe 100644
 -const REDIRECT_URL_INSIDERS = 'https://insiders.vscode.dev/redirect';
 -
  export interface IGitHubServer {
-@@ -30,9 +20,2 @@ export interface IGitHubServer {
+@@ -30,8 +20,2 @@ export interface IGitHubServer {
  
 -interface IGitHubDeviceCodeResponse {
 -	device_code: string;
@@ -30,9 +30,8 @@ index e1f766d..4f11dbe 100644
 -	verification_uri: string;
 -	interval: number;
 -}
--
- async function getScopes(token: string, serverUri: vscode.Uri, logger: Log): Promise<string[]> {
-@@ -63,8 +46,4 @@ export class GitHubServer implements IGitHubServer {
+ 
+@@ -63,8 +47,4 @@ export class GitHubServer implements IGitHubServer {
  
 -	private readonly _pendingNonces = new Map<string, string[]>();
 -	private readonly _codeExchangePromises = new Map<string, { promise: Promise<string>; cancel: vscode.EventEmitter<void> }>();
@@ -41,13 +40,13 @@ index e1f766d..4f11dbe 100644
 -	private _redirectEndpoint: string | undefined;
 -
  	constructor(
-@@ -72,3 +51,5 @@ export class GitHubServer implements IGitHubServer {
+@@ -72,3 +52,5 @@ export class GitHubServer implements IGitHubServer {
  		private readonly _telemetryReporter: ExperimentationTelemetry,
 +		// @ts-ignore
  		private readonly _uriHandler: UriEventHandler,
 +		// @ts-ignore
- 		private readonly _supportDeviceCodeFlow: boolean,
-@@ -87,41 +68,2 @@ export class GitHubServer implements IGitHubServer {
+ 		private readonly _extensionKind: vscode.ExtensionKind,
+@@ -87,41 +69,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async getRedirectEndpoint(): Promise<string> {
 -		if (this._redirectEndpoint) {
@@ -89,7 +88,7 @@ index e1f766d..4f11dbe 100644
 -	}
 -
  	// TODO@joaomoreno TODO@TylerLeonhardt
-@@ -137,58 +79,8 @@ export class GitHubServer implements IGitHubServer {
+@@ -137,57 +80,2 @@ export class GitHubServer implements IGitHubServer {
  		let userCancelled: boolean | undefined;
 -		const yes = vscode.l10n.t('Yes');
 -		const no = vscode.l10n.t('No');
@@ -109,7 +108,7 @@ index e1f766d..4f11dbe 100644
 -
 -		const nonce: string = crypto.getRandomValues(new Uint32Array(2)).reduce((prev, curr) => prev += curr.toString(16), '');
 -		const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate?nonce=${encodeURIComponent(nonce)}`));
- 
+-
 -		const supported = isSupportedEnvironment(callbackUri);
 -		if (supported) {
 -			try {
@@ -120,8 +119,13 @@ index e1f766d..4f11dbe 100644
 -			}
 -		}
 -
--		// Starting a local server isn't supported in web
--		if (vscode.env.uiKind === vscode.UIKind.Desktop) {
+-		// Starting a local server is only supported if:
+-		// 1. We are in a UI extension because we need to open a port on the machine that has the browser
+-		// 2. We are in a node runtime because we need to open a port on the machine
+-		if (
+-			this._extensionKind === vscode.ExtensionKind.UI &&
+-			typeof navigator === 'undefined'
+-		) {
 -			try {
 -				await promptToContinue();
 -				return await this.doLoginWithLocalServer(scopes);
@@ -131,7 +135,8 @@ index e1f766d..4f11dbe 100644
 -			}
 -		}
 -
--		if (this._supportDeviceCodeFlow) {
+-		// We only can use the Device Code flow when we have a full node environment because of CORS.
+-		if (typeof navigator === 'undefined') {
 -			try {
 -				await promptToContinue();
 -				return await this.doLoginDeviceCodeFlow(scopes);
@@ -139,7 +144,11 @@ index e1f766d..4f11dbe 100644
 -				this._logger.error(e);
 -				userCancelled = e.message ?? e === 'User Cancelled';
 -			}
--		} else if (!supported) {
+-		}
+ 
+@@ -195,10 +83,7 @@ export class GitHubServer implements IGitHubServer {
+ 		// With that said, GitHub Enterprise isn't used by Settings Sync so we can use PATs for that.
+-		if (!supported || this._type === AuthProviderType.githubEnterprise) {
 -			try {
 -				await promptToContinue();
 -				return await this.doLoginWithPat(scopes);
@@ -153,7 +162,7 @@ index e1f766d..4f11dbe 100644
 +			this._logger.error(e);
 +			userCancelled = e.message ?? e === 'User Cancelled';
  		}
-@@ -198,136 +90,2 @@ export class GitHubServer implements IGitHubServer {
+@@ -208,136 +93,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async doLoginWithoutLocalServer(scopes: string, nonce: string, callbackUri: vscode.Uri): Promise<string> {
 -		this._logger.info(`Trying without local server... (${scopes})`);
@@ -290,7 +299,7 @@ index e1f766d..4f11dbe 100644
 -	}
 -
  	private async doLoginWithPat(scopes: string): Promise<string> {
-@@ -355,124 +113,2 @@ export class GitHubServer implements IGitHubServer {
+@@ -381,124 +132,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async waitForDeviceCodeAccessToken(
 -		json: IGitHubDeviceCodeResponse,
@@ -416,7 +425,7 @@ index e1f766d..4f11dbe 100644
 -
  	private getServerUri(path: string = '') {
 diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
-index 2fff6cf..46967ce 100644
+index 266311d..f066323 100644
 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
 +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
 @@ -307,3 +307,3 @@ export class AccountsActivityActionViewItem extends MenuActivityActionViewItem {
@@ -425,10 +434,10 @@ index 2fff6cf..46967ce 100644
 +		if (!menus.length) {
  			const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false));
 diff --git a/src/vs/workbench/services/authentication/browser/authenticationService.ts b/src/vs/workbench/services/authentication/browser/authenticationService.ts
-index 1d9ac76..57b915c 100644
+index 8dd6e19..10c2611 100644
 --- a/src/vs/workbench/services/authentication/browser/authenticationService.ts
 +++ b/src/vs/workbench/services/authentication/browser/authenticationService.ts
-@@ -267,12 +267,2 @@ export class AuthenticationService extends Disposable implements IAuthentication
+@@ -274,12 +274,2 @@ export class AuthenticationService extends Disposable implements IAuthentication
  		}
 -
 -		if (!this._authenticationProviders.size) {

+ 14 - 9
product.json

@@ -48,7 +48,8 @@
   ],
   "extensionEnabledApiProposals": {
     "ms-vscode.vscode-selfhost-test-provider": [
-      "testObserver"
+      "testObserver",
+      "testContinuousRun"
     ],
     "VisualStudioExptTeam.vscodeintellicode-completions": [
       "inlineCompletionsAdditions"
@@ -76,8 +77,7 @@
     ],
     "ms-python.python": [
       "quickPickSortByLabel",
-      "testObserver",
-      "telemetryLogger"
+      "testObserver"
     ],
     "ms-dotnettools.dotnet-interactive-vscode": [
       "notebookMessaging"
@@ -96,7 +96,6 @@
     "ms-vscode.azure-repos": [
       "extensionRuntime",
       "fileSearchProvider",
-      "telemetryLogger",
       "textSearchProvider"
     ],
     "ms-vscode.remote-repositories": [
@@ -115,12 +114,12 @@
       "scmActionButton",
       "scmSelectedProvider",
       "scmValidation",
-      "telemetryLogger",
       "textSearchProvider",
       "timeline"
     ],
     "ms-vscode-remote.remote-wsl": [
       "resolvers",
+      "contribRemoteHelp",
       "contribViewsRemote",
       "telemetry"
     ],
@@ -128,13 +127,16 @@
       "resolvers",
       "tunnels",
       "terminalDataWriteEvent",
+      "contribRemoteHelp",
       "contribViewsRemote",
       "telemetry"
     ],
     "ms-vscode.remote-server": [
-      "resolvers"
+      "resolvers",
+      "tunnels"
     ],
     "ms-vscode.remote-explorer": [
+      "contribRemoteHelp",
       "contribViewsRemote",
       "extensionsAny"
     ],
@@ -144,6 +146,7 @@
       "tunnels",
       "workspaceTrust",
       "terminalDimensions",
+      "contribRemoteHelp",
       "contribViewsRemote"
     ],
     "ms-vscode.js-debug-nightly": [
@@ -163,7 +166,9 @@
       "contribCommentPeekContext",
       "treeItemCheckbox",
       "codiconDecoration",
-      "diffCommand"
+      "diffCommand",
+      "contribCommentEditorActionsMenu",
+      "quickDiffProvider"
     ],
     "GitHub.copilot": [
       "inlineCompletionsAdditions"
@@ -184,8 +189,7 @@
       "scmSelectedProvider",
       "scmValidation",
       "textSearchProvider",
-      "timeline",
-      "telemetryLogger"
+      "timeline"
     ],
     "ms-python.gather": [
       "notebookCellExecutionState"
@@ -231,6 +235,7 @@
       "resolvers",
       "tunnels",
       "terminalDataWriteEvent",
+      "contribRemoteHelp",
       "contribViewsRemote"
     ]
   },