mirror of
https://github.com/kahole/edamagit.git
synced 2024-10-26 09:00:54 +03:00
Compare commits
5 Commits
916a4c808d
...
375b40146d
Author | SHA1 | Date | |
---|---|---|---|
|
375b40146d | ||
|
ed502d9e32 | ||
|
684939f464 | ||
|
7f59123fc1 | ||
|
de50ff3619 |
2
.github/workflows/deploy.yml
vendored
2
.github/workflows/deploy.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 18
|
||||
- run: npm ci
|
||||
- name: Publish to Open VSX Registry
|
||||
uses: HaaLeo/publish-vscode-extension@v1
|
||||
|
2
.github/workflows/node.js.yml
vendored
2
.github/workflows/node.js.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x]
|
||||
node-version: [18.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
|
@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## [0.6.38]
|
||||
## [0.6.37] - 2023-03-01
|
||||
- Switch from `--preserve-merges` to newer `--rebase-merges` in rebasing options
|
||||
- Upgrade to newer refs api to fix breakage on coming VSCode versions (Burak @unexge)
|
||||
- Upgrade dependencies
|
||||
|
||||
## [0.6.36] - 2022-12-07
|
||||
- Make forge status fully async as to not block the git status buffer
|
||||
- Move away from private vscode APIs that are to be removed soon
|
||||
|
2831
package-lock.json
generated
2831
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
48
package.json
48
package.json
@ -7,7 +7,7 @@
|
||||
"author": {
|
||||
"name": "Kristian Andersen Hole"
|
||||
},
|
||||
"version": "0.6.36",
|
||||
"version": "0.6.38",
|
||||
"engines": {
|
||||
"vscode": "^1.50.0"
|
||||
},
|
||||
@ -37,38 +37,6 @@
|
||||
}
|
||||
},
|
||||
"activationEvents": [
|
||||
"onCommand:magit.status",
|
||||
"onCommand:magit.dispatch",
|
||||
"onCommand:magit.commit",
|
||||
"onCommand:magit.branching",
|
||||
"onCommand:magit.merging",
|
||||
"onCommand:magit.rebasing",
|
||||
"onCommand:magit.resetting",
|
||||
"onCommand:magit.pushing",
|
||||
"onCommand:magit.pulling",
|
||||
"onCommand:magit.remoting",
|
||||
"onCommand:magit.logging",
|
||||
"onCommand:magit.show-refs",
|
||||
"onCommand:magit.diffing",
|
||||
"onCommand:magit.tagging",
|
||||
"onCommand:magit.cherry-picking",
|
||||
"onCommand:magit.reverting",
|
||||
"onCommand:magit.ignoring",
|
||||
"onCommand:magit.running",
|
||||
"onCommand:magit.worktree",
|
||||
"onCommand:magit.help",
|
||||
"onCommand:magit.stashing",
|
||||
"onCommand:magit.submodules",
|
||||
"onCommand:magit.fetching",
|
||||
"onCommand:magit.process-log",
|
||||
"onCommand:magit.file-popup",
|
||||
"onCommand:magit.blame-file",
|
||||
"onCommand:magit.diff-file",
|
||||
"onCommand:magit.log-file",
|
||||
"onCommand:magit.stage-file",
|
||||
"onCommand:magit.stage-all",
|
||||
"onCommand:magit.unstage-file",
|
||||
"onCommand:magit.unstage-all",
|
||||
"onCommand:magit.save-and-close-editor",
|
||||
"onCommand:magit.clear-and-abort-editor"
|
||||
],
|
||||
@ -737,20 +705,20 @@
|
||||
"devDependencies": {
|
||||
"@types/glob": "^7.1.3",
|
||||
"@types/mocha": "^8.2.0",
|
||||
"@types/node": "^14.14.14",
|
||||
"@types/node": "^18.14.2",
|
||||
"@types/vscode": "^1.50.0",
|
||||
"@types/which": "^2.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^4.10.0",
|
||||
"@typescript-eslint/parser": "^4.10.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||
"@typescript-eslint/parser": "^5.54.0",
|
||||
"eslint": "^7.16.0",
|
||||
"eslint-loader": "^4.0.2",
|
||||
"glob": "^7.1.6",
|
||||
"mocha": "^10.1.0",
|
||||
"ts-loader": "^8.0.12",
|
||||
"typescript": "^4.1.3",
|
||||
"ts-loader": "^9.4.2",
|
||||
"typescript": "^4.9.5",
|
||||
"vscode-test": "^1.4.1",
|
||||
"webpack": "^5.11.0",
|
||||
"webpack-cli": "^4.2.0"
|
||||
"webpack": "^5.75.0",
|
||||
"webpack-cli": "^5.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vscode/iconv-lite-umd": "^0.7.0",
|
||||
|
@ -116,7 +116,7 @@ async function deleteBranch({ repository }: MenuState) {
|
||||
if (ref) {
|
||||
try {
|
||||
await gitRun(repository.gitRepository, ['branch', '--delete', ref]);
|
||||
} catch (error) {
|
||||
} catch (error: any) {
|
||||
if (error.gitErrorCode === GitErrorCodes.BranchNotFullyMerged) {
|
||||
if (await MagitUtils.confirmAction(`Delete unmerged branch ${ref}?`)) {
|
||||
return await gitRun(repository.gitRepository, ['branch', '--delete', '--force', ref]);
|
||||
|
@ -118,7 +118,7 @@ async function discard(repository: MagitRepository, selection: Selection, select
|
||||
if (await MagitUtils.confirmAction(`Delete branch ${branch.name}?`)) {
|
||||
try {
|
||||
await gitRun(repository.gitRepository, ['branch', '--delete', branch.name]);
|
||||
} catch (error) {
|
||||
} catch (error: any) {
|
||||
if (error.gitErrorCode === GitErrorCodes.BranchNotFullyMerged) {
|
||||
if (await MagitUtils.confirmAction(`Delete unmerged branch ${branch.name}?`)) {
|
||||
return gitRun(repository.gitRepository, ['branch', '--delete', '--force', branch.name]);
|
||||
@ -137,7 +137,7 @@ async function discard(repository: MagitRepository, selection: Selection, select
|
||||
if (await MagitUtils.confirmAction(`Delete branch ${branch.name} at REMOTE ${remote} (push --delete)?`)) {
|
||||
try {
|
||||
await gitRun(repository.gitRepository, ['push', '--delete', remote, name]);
|
||||
} catch (error) {
|
||||
} catch (error: any) {
|
||||
if (error.gitErrorCode === GitErrorCodes.BranchNotFullyMerged) {
|
||||
if (await MagitUtils.confirmAction(`Delete unmerged branch ${branch.name}?`)) {
|
||||
return gitRun(repository.gitRepository, ['push', '--delete', remote, name]);
|
||||
|
@ -23,7 +23,7 @@ export async function rebasing(repository: MagitRepository) {
|
||||
|
||||
const switches = [
|
||||
{ key: '-k', name: '--keep-empty', description: 'Keep empty commits' },
|
||||
{ key: '-p', name: '--preserve-merges', description: 'Preserve merges' },
|
||||
{ key: '-p', name: '--rebase-merges', description: 'Rebase merges' },
|
||||
{ key: '-c', name: '--committer-date-is-author-date', description: 'Lie about committer date' },
|
||||
{ key: '-a', name: '--autosquash', description: 'Autosquash' },
|
||||
{ key: '-A', name: '--autostash', description: 'Autostash' },
|
||||
|
@ -5,7 +5,7 @@ import FilePathUtils from '../utils/filePathUtils';
|
||||
import GitTextUtils from '../utils/gitTextUtils';
|
||||
import MagitUtils from '../utils/magitUtils';
|
||||
import MagitStatusView from '../views/magitStatusView';
|
||||
import { Status, Commit, RefType, Repository, Change } from '../typings/git';
|
||||
import { Status, Commit, RefType, Repository, Change, Ref } from '../typings/git';
|
||||
import { MagitBranch, MagitUpstreamRef } from '../models/magitBranch';
|
||||
import { gitRun, LogLevel } from '../utils/gitRawRunner';
|
||||
import * as Constants from '../common/constants';
|
||||
@ -132,16 +132,18 @@ export async function internalMagitStatus(repository: Repository): Promise<Magit
|
||||
|
||||
const HEAD = repository.state.HEAD as MagitBranch | undefined;
|
||||
|
||||
const refs = await getRefs(repository);
|
||||
|
||||
if (HEAD?.commit) {
|
||||
HEAD.commitDetails = await getCommit(repository, HEAD.commit);
|
||||
|
||||
HEAD.tag = repository.state.refs.find(r => HEAD?.commit === r.commit && r.type === RefType.Tag);
|
||||
HEAD.tag = refs.find(r => HEAD?.commit === r.commit && r.type === RefType.Tag);
|
||||
|
||||
try {
|
||||
if (HEAD.upstream?.remote) {
|
||||
const upstreamRemote = HEAD.upstream.remote;
|
||||
|
||||
const upstreamRemoteCommit = repository.state.refs.find(ref => ref.remote === upstreamRemote && ref.name === `${upstreamRemote}/${HEAD.upstream?.name}`)?.commit;
|
||||
const upstreamRemoteCommit = refs.find(ref => ref.remote === upstreamRemote && ref.name === `${upstreamRemote}/${HEAD.upstream?.name}`)?.commit;
|
||||
const upstreamRemoteCommitDetails = upstreamRemoteCommit ? getCommit(repository, upstreamRemoteCommit) : undefined;
|
||||
|
||||
const isRebaseUpstream = repository.getConfig(`branch.${HEAD.upstream.name}.rebase`);
|
||||
@ -157,7 +159,7 @@ export async function internalMagitStatus(repository: Repository): Promise<Magit
|
||||
HEAD.pushRemote = await pushRemoteStatus(repository);
|
||||
}
|
||||
|
||||
const remoteBranches = repository.state.refs.filter(ref => ref.type === RefType.RemoteHead);
|
||||
const remoteBranches = refs.filter(ref => ref.type === RefType.RemoteHead);
|
||||
|
||||
const remotes: MagitRemote[] = repository.state.remotes.map(remote => ({
|
||||
...remote,
|
||||
@ -181,10 +183,10 @@ export async function internalMagitStatus(repository: Repository): Promise<Magit
|
||||
mergingState: await mergingStateTask,
|
||||
cherryPickingState: await cherryPickingStateTask,
|
||||
revertingState: await revertingStateTask,
|
||||
branches: repository.state.refs.filter(ref => ref.type === RefType.Head),
|
||||
branches: refs.filter(ref => ref.type === RefType.Head),
|
||||
remotes,
|
||||
tags: repository.state.refs.filter(ref => ref.type === RefType.Tag),
|
||||
refs: repository.state.refs,
|
||||
tags: refs.filter(ref => ref.type === RefType.Tag),
|
||||
refs,
|
||||
submodules: repository.state.submodules,
|
||||
gitRepository: repository,
|
||||
forgeState: forgeState,
|
||||
@ -212,7 +214,8 @@ async function pushRemoteStatus(repository: Repository): Promise<MagitUpstreamRe
|
||||
const commitsAhead = await Promise.all(commitsAheadPushRemote.map(c => getCommit(repository, c)));
|
||||
const commitsBehind = await Promise.all(commitsBehindPushRemote.map(c => getCommit(repository, c)));
|
||||
|
||||
const pushRemoteCommit = repository.state.refs.find(ref => ref.remote === pushRemote && ref.name === `${pushRemote}/${HEAD.name}`)?.commit;
|
||||
const refs = await getRefs(repository);
|
||||
const pushRemoteCommit = refs.find(ref => ref.remote === pushRemote && ref.name === `${pushRemote}/${HEAD.name}`)?.commit;
|
||||
const pushRemoteCommitDetails = pushRemoteCommit ? getCommit(repository, pushRemoteCommit) : Promise.resolve(undefined);
|
||||
|
||||
return { remote: pushRemote, name: HEAD.name, commit: await pushRemoteCommitDetails, commitsAhead, commitsBehind };
|
||||
@ -306,7 +309,8 @@ async function rebasingStatus(repository: Repository, dotGitPath: string, logTas
|
||||
}
|
||||
|
||||
let ontoCommit = await getCommit(repository, await rebaseOntoPathFileTask!);
|
||||
let ontoBranch = repository.state.refs.find(ref => ref.commit === ontoCommit.hash && ref.type !== RefType.RemoteHead);
|
||||
const refs = await getRefs(repository);
|
||||
let ontoBranch = refs.find(ref => ref.commit === ontoCommit.hash && ref.type !== RefType.RemoteHead);
|
||||
|
||||
let onto = {
|
||||
name: ontoBranch?.name ?? GitTextUtils.shortHash(ontoCommit.hash),
|
||||
@ -403,4 +407,14 @@ async function getStashes(repository: Repository): Promise<Stash[]> {
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
async function getRefs(repository: Repository): Promise<Ref[]> {
|
||||
// `repository.getRefs` is not available on older versions and we should
|
||||
// just use `repository.state.refs` on those versions.
|
||||
if (typeof repository.getRefs !== 'function') {
|
||||
return repository.state.refs;
|
||||
}
|
||||
|
||||
return await repository.getRefs({});
|
||||
}
|
15
src/typings/git.d.ts
vendored
15
src/typings/git.d.ts
vendored
@ -103,6 +103,7 @@ export interface Change {
|
||||
|
||||
export interface RepositoryState {
|
||||
readonly HEAD: Branch | undefined;
|
||||
// @deprecated Use `Repository.getRefs()` instead.
|
||||
readonly refs: Ref[];
|
||||
readonly remotes: Remote[];
|
||||
readonly submodules: Submodule[];
|
||||
@ -147,11 +148,15 @@ export interface FetchOptions {
|
||||
depth?: number;
|
||||
}
|
||||
|
||||
export interface BranchQuery {
|
||||
readonly remote?: boolean;
|
||||
readonly pattern?: string;
|
||||
readonly count?: number;
|
||||
export interface RefQuery {
|
||||
readonly contains?: string;
|
||||
readonly count?: number;
|
||||
readonly pattern?: string;
|
||||
readonly sort?: 'alphabetically' | 'committerdate';
|
||||
}
|
||||
|
||||
export interface BranchQuery extends RefQuery {
|
||||
readonly remote?: boolean;
|
||||
}
|
||||
|
||||
export interface Repository {
|
||||
@ -197,6 +202,8 @@ export interface Repository {
|
||||
getBranches(query: BranchQuery): Promise<Ref[]>;
|
||||
setBranchUpstream(name: string, upstream: string): Promise<void>;
|
||||
|
||||
getRefs(query: RefQuery, /* cancellationToken?: CancellationToken */): Promise<Ref[]>;
|
||||
|
||||
getMergeBase(ref1: string, ref2: string): Promise<string>;
|
||||
|
||||
tag(name: string, upstream: string): Promise<void>;
|
||||
|
@ -4,6 +4,7 @@ const commitCache: { [hash: string]: Promise<Commit>; } = {};
|
||||
|
||||
export function getCommit(repository: Repository, hash: string): Promise<Commit> {
|
||||
|
||||
//@ts-expect-error TS2801
|
||||
if (commitCache[hash]) {
|
||||
return commitCache[hash];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user