Browse Source

Skips caching when getting main repo for worktree creation (#2544)

* Skips caching when getting main repo for worktree creation

* Always sets force and no-nested from getMainRepository
main
Ramin Tadayon 1 year ago
committed by GitHub
parent
commit
611175f269
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions
  1. +3
    -3
      src/git/gitProviderService.ts
  2. +5
    -1
      src/git/models/repository.ts

+ 3
- 3
src/git/gitProviderService.ts View File

@ -2103,7 +2103,7 @@ export class GitProviderService implements Disposable {
@log<GitProviderService['getOrOpenRepository']>({ exit: r => `returned ${r?.path}` })
async getOrOpenRepository(
uri: Uri,
options?: { closeOnOpen?: boolean; detectNested?: boolean },
options?: { closeOnOpen?: boolean; detectNested?: boolean; force?: boolean },
): Promise<Repository | undefined> {
const scope = getLogScope();
@ -2116,14 +2116,14 @@ export class GitProviderService implements Disposable {
const detectNested = options?.detectNested ?? configuration.get('detectNestedRepositories', uri);
if (!detectNested) {
if (repository != null) return repository;
} else if (this._visitedPaths.has(path)) {
} else if (!options?.force && this._visitedPaths.has(path)) {
return repository;
} else {
const stats = await workspace.fs.stat(uri);
// If the uri isn't a directory, go up one level
if ((stats.type & FileType.Directory) !== FileType.Directory) {
uri = Uri.joinPath(uri, '..');
if (this._visitedPaths.has(getBestPath(uri))) return repository;
if (!options?.force && this._visitedPaths.has(getBestPath(uri))) return repository;
}
isDirectory = true;

+ 5
- 1
src/git/models/repository.ts View File

@ -652,7 +652,11 @@ export class Repository implements Disposable {
if (gitDir?.commonUri == null) return this;
// If the repository isn't already opened, then open it as a "closed" repo (won't show up in the UI)
return this.container.git.getOrOpenRepository(gitDir.commonUri, { closeOnOpen: true });
return this.container.git.getOrOpenRepository(gitDir.commonUri, {
detectNested: false,
force: true,
closeOnOpen: true,
});
}
getMergeStatus(): Promise<GitMergeStatus | undefined> {

Loading…
Cancel
Save