@andrebuzeli/git-mcp 2.27.4 → 2.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +306 -306
- package/dist/client.js +298 -298
- package/dist/config.d.ts +310 -310
- package/dist/config.js +392 -392
- package/dist/index.d.ts +22 -22
- package/dist/index.js +89 -89
- package/dist/providers/base-provider.d.ts +160 -156
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +274 -260
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/error-handler.d.ts +50 -50
- package/dist/providers/error-handler.js +175 -175
- package/dist/providers/gitea-provider.d.ts +97 -97
- package/dist/providers/gitea-provider.js +1001 -1001
- package/dist/providers/github-provider.d.ts +104 -104
- package/dist/providers/github-provider.js +1234 -1234
- package/dist/providers/index.d.ts +12 -12
- package/dist/providers/index.js +40 -40
- package/dist/providers/provider-factory.d.ts +74 -74
- package/dist/providers/provider-factory.js +311 -311
- package/dist/providers/types.d.ts +318 -298
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +6 -6
- package/dist/server.d.ts +76 -76
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +306 -305
- package/dist/server.js.map +1 -1
- package/dist/tools/gh-actions.d.ts +252 -252
- package/dist/tools/gh-actions.js +389 -389
- package/dist/tools/gh-analytics.d.ts +263 -263
- package/dist/tools/gh-analytics.js +401 -401
- package/dist/tools/gh-code-review.d.ts +304 -304
- package/dist/tools/gh-code-review.js +512 -512
- package/dist/tools/gh-codespaces.d.ts +138 -138
- package/dist/tools/gh-codespaces.js +282 -282
- package/dist/tools/gh-deployments.d.ts +300 -300
- package/dist/tools/gh-deployments.js +367 -367
- package/dist/tools/gh-gists.d.ts +174 -174
- package/dist/tools/gh-gists.js +321 -321
- package/dist/tools/gh-projects.d.ts +205 -205
- package/dist/tools/gh-projects.js +358 -358
- package/dist/tools/gh-security.d.ts +274 -274
- package/dist/tools/gh-security.js +395 -395
- package/dist/tools/gh-sync.d.ts +213 -213
- package/dist/tools/gh-sync.js +378 -378
- package/dist/tools/gh-workflows.d.ts +290 -290
- package/dist/tools/gh-workflows.js +432 -432
- package/dist/tools/git-archive.d.ts +165 -165
- package/dist/tools/git-archive.js +233 -233
- package/dist/tools/git-branches.d.ts +430 -430
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +627 -530
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-bundle.d.ts +171 -171
- package/dist/tools/git-bundle.js +241 -241
- package/dist/tools/git-cherry-pick.d.ts +158 -158
- package/dist/tools/git-cherry-pick.js +224 -224
- package/dist/tools/git-commits.d.ts +485 -485
- package/dist/tools/git-commits.d.ts.map +1 -1
- package/dist/tools/git-commits.js +735 -625
- package/dist/tools/git-commits.js.map +1 -1
- package/dist/tools/git-config.d.ts +140 -140
- package/dist/tools/git-config.js +268 -268
- package/dist/tools/git-files.d.ts +486 -486
- package/dist/tools/git-files.js +607 -607
- package/dist/tools/git-issues.d.ts +571 -571
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +740 -693
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +694 -694
- package/dist/tools/git-pulls.js +732 -732
- package/dist/tools/git-rebase.d.ts +137 -137
- package/dist/tools/git-rebase.js +213 -213
- package/dist/tools/git-releases.d.ts +487 -487
- package/dist/tools/git-releases.js +557 -557
- package/dist/tools/git-remote.d.ts +138 -138
- package/dist/tools/git-remote.js +274 -274
- package/dist/tools/git-repositories.d.ts +483 -483
- package/dist/tools/git-repositories.js +640 -640
- package/dist/tools/git-reset.d.ts +130 -130
- package/dist/tools/git-reset.js +223 -223
- package/dist/tools/git-revert.d.ts +149 -149
- package/dist/tools/git-revert.js +198 -198
- package/dist/tools/git-stash.d.ts +140 -140
- package/dist/tools/git-stash.js +269 -269
- package/dist/tools/git-submodule.d.ts +152 -152
- package/dist/tools/git-submodule.js +289 -289
- package/dist/tools/git-sync.d.ts +178 -166
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +312 -117
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +411 -411
- package/dist/tools/git-tags.js +485 -485
- package/dist/tools/git-webhooks.d.ts +470 -482
- package/dist/tools/git-webhooks.d.ts.map +1 -1
- package/dist/tools/git-webhooks.js +543 -555
- package/dist/tools/git-webhooks.js.map +1 -1
- package/dist/tools/git-worktree.d.ts +159 -159
- package/dist/tools/git-worktree.js +269 -269
- package/dist/tools/repositories.d.ts +405 -405
- package/dist/tools/repositories.js +569 -569
- package/dist/tools/users.d.ts +372 -372
- package/dist/tools/users.js +499 -499
- package/dist/tools/validator.d.ts +170 -170
- package/dist/tools/validator.js +194 -194
- package/dist/tools/version-control.d.ts +136 -136
- package/dist/tools/version-control.js +164 -164
- package/dist/utils/terminal-controller.d.ts +80 -80
- package/dist/utils/terminal-controller.js +345 -345
- package/dist/utils/user-detection.d.ts +24 -24
- package/dist/utils/user-detection.js +53 -53
- package/package.json +59 -59
package/dist/tools/git-sync.js
CHANGED
|
@@ -1,118 +1,313 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.gitSyncTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* -
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gitSyncTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
const user_detection_js_1 = require("../utils/user-detection.js");
|
|
7
|
+
/**
|
|
8
|
+
* Tool: git-sync
|
|
9
|
+
*
|
|
10
|
+
* DESCRIÇÃO:
|
|
11
|
+
* Sincronização entre dois repositórios hospedados em provedores distintos (ex.: Gitea <-> GitHub).
|
|
12
|
+
*
|
|
13
|
+
* OBJETIVOS:
|
|
14
|
+
* - Configurar espelhamento (quando suportado pelo backend) e registrar estado
|
|
15
|
+
* - Executar sincronização pontual (one-shot) de código e/ou metadados
|
|
16
|
+
* - Consultar status/diagnóstico da sincronização
|
|
17
|
+
*
|
|
18
|
+
* LIMITAÇÕES:
|
|
19
|
+
* - Histórico Git completo por API REST é limitado; prioriza espelhamento nativo (push mirrors) quando disponível
|
|
20
|
+
* - Metadados (issues, labels, releases, PRs) têm mapeamento best-effort com diferenças entre plataformas
|
|
21
|
+
*
|
|
22
|
+
* DICAS (solo):
|
|
23
|
+
* - Use para manter um backup/em espelho entre provedores
|
|
24
|
+
* - Prefira one-shot antes de configurar contínuo; verifique status e conflitos
|
|
25
|
+
* - Defina estratégia de conflito e escopos explicitamente
|
|
26
|
+
*/
|
|
27
|
+
const GitSyncInputSchema = zod_1.z.object({
|
|
28
|
+
action: zod_1.z.enum(['configure', 'status', 'one-shot']),
|
|
29
|
+
source: zod_1.z.object({
|
|
30
|
+
provider: zod_1.z.enum(['gitea', 'github']),
|
|
31
|
+
repo: zod_1.z.string()
|
|
32
|
+
}),
|
|
33
|
+
target: zod_1.z.object({
|
|
34
|
+
provider: zod_1.z.enum(['gitea', 'github']),
|
|
35
|
+
repo: zod_1.z.string()
|
|
36
|
+
}),
|
|
37
|
+
direction: zod_1.z.enum(['one-way', 'two-way']).optional(),
|
|
38
|
+
include: zod_1.z.array(zod_1.z.enum(['git', 'issues', 'labels', 'milestones', 'releases', 'pulls'])).optional(),
|
|
39
|
+
strategy: zod_1.z.enum(['source-wins', 'timestamp', 'skip-conflicts']).optional(),
|
|
40
|
+
dry_run: zod_1.z.boolean().optional()
|
|
41
|
+
});
|
|
42
|
+
const GitSyncResultSchema = zod_1.z.object({
|
|
43
|
+
success: zod_1.z.boolean(),
|
|
44
|
+
action: zod_1.z.string(),
|
|
45
|
+
message: zod_1.z.string(),
|
|
46
|
+
data: zod_1.z.any().optional(),
|
|
47
|
+
error: zod_1.z.string().optional()
|
|
48
|
+
});
|
|
49
|
+
exports.gitSyncTool = {
|
|
50
|
+
name: 'git-sync',
|
|
51
|
+
description: 'Synchronize two repositories across providers (Gitea <-> GitHub). Modos: configure (espelhamento quando suportado), one-shot (execução pontual) e status (diagnóstico). Dicas: execute dry-run primeiro, escolha escopos e estratégia de conflito.',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {
|
|
55
|
+
action: { type: 'string', enum: ['configure', 'status', 'one-shot'], description: 'Sync action' },
|
|
56
|
+
source: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
description: 'Source repository descriptor',
|
|
59
|
+
properties: {
|
|
60
|
+
provider: { type: 'string' },
|
|
61
|
+
owner: { type: 'string' },
|
|
62
|
+
repo: { type: 'string' }
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
target: {
|
|
66
|
+
type: 'object',
|
|
67
|
+
description: 'Target repository descriptor',
|
|
68
|
+
properties: {
|
|
69
|
+
provider: { type: 'string' },
|
|
70
|
+
owner: { type: 'string' },
|
|
71
|
+
repo: { type: 'string' }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
direction: { type: 'string', enum: ['one-way', 'two-way'], description: 'Sync direction' },
|
|
75
|
+
include: { type: 'array', items: { type: 'string', enum: ['git', 'issues', 'labels', 'milestones', 'releases', 'pulls'] }, description: 'Scopes to include' },
|
|
76
|
+
strategy: { type: 'string', enum: ['source-wins', 'timestamp', 'skip-conflicts'], description: 'Conflict strategy' },
|
|
77
|
+
dry_run: { type: 'boolean', description: 'Simulate without applying changes' }
|
|
78
|
+
},
|
|
79
|
+
required: ['action', 'source', 'target']
|
|
80
|
+
},
|
|
81
|
+
async handler(input) {
|
|
82
|
+
try {
|
|
83
|
+
const validatedInput = GitSyncInputSchema.parse(input);
|
|
84
|
+
// Aplicar auto-detecção para ambos os providers
|
|
85
|
+
const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.source.provider);
|
|
86
|
+
switch (validatedInput.action) {
|
|
87
|
+
case 'configure':
|
|
88
|
+
return await this.configureSync(validatedInput);
|
|
89
|
+
case 'status':
|
|
90
|
+
return await this.getSyncStatus(validatedInput);
|
|
91
|
+
case 'one-shot':
|
|
92
|
+
return await this.executeSync(validatedInput);
|
|
93
|
+
default:
|
|
94
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
return {
|
|
99
|
+
success: false,
|
|
100
|
+
action: input.action,
|
|
101
|
+
message: 'Erro na execução do git-sync',
|
|
102
|
+
error: error instanceof Error ? error.message : String(error)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* Configura sincronização entre dois repositórios
|
|
108
|
+
*/
|
|
109
|
+
async configureSync(params) {
|
|
110
|
+
try {
|
|
111
|
+
const sourceProvider = index_js_1.globalProviderFactory.getProvider(params.source.provider);
|
|
112
|
+
const targetProvider = index_js_1.globalProviderFactory.getProvider(params.target.provider);
|
|
113
|
+
if (!sourceProvider || !targetProvider) {
|
|
114
|
+
throw new Error('Providers não encontrados para sincronização');
|
|
115
|
+
}
|
|
116
|
+
// Obter informações dos repositórios
|
|
117
|
+
const sourceOwner = (await sourceProvider.getCurrentUser()).login;
|
|
118
|
+
const targetOwner = (await targetProvider.getCurrentUser()).login;
|
|
119
|
+
const sourceRepo = await sourceProvider.getRepository(sourceOwner, params.source.repo);
|
|
120
|
+
const targetRepo = await targetProvider.getRepository(targetOwner, params.target.repo);
|
|
121
|
+
// Configurar webhook para sincronização automática se suportado
|
|
122
|
+
const targetConfig = targetProvider.getConfig?.();
|
|
123
|
+
const webhookUrl = `${targetConfig?.baseUrl || 'http://localhost'}/webhook/sync`;
|
|
124
|
+
const webhookEvents = ['push', 'pull_request'];
|
|
125
|
+
try {
|
|
126
|
+
await sourceProvider.createWebhook(sourceOwner, params.source.repo, webhookUrl, webhookEvents, 'Sincronização automática');
|
|
127
|
+
}
|
|
128
|
+
catch (webhookError) {
|
|
129
|
+
console.warn('Aviso: Não foi possível configurar webhook automático:', webhookError);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
action: 'configure',
|
|
134
|
+
message: `Sincronização configurada entre ${params.source.provider}/${params.source.repo} e ${params.target.provider}/${params.target.repo}`,
|
|
135
|
+
data: {
|
|
136
|
+
source: {
|
|
137
|
+
provider: params.source.provider,
|
|
138
|
+
owner: sourceOwner,
|
|
139
|
+
repo: params.source.repo,
|
|
140
|
+
url: sourceRepo.html_url
|
|
141
|
+
},
|
|
142
|
+
target: {
|
|
143
|
+
provider: params.target.provider,
|
|
144
|
+
owner: targetOwner,
|
|
145
|
+
repo: params.target.repo,
|
|
146
|
+
url: targetRepo.html_url
|
|
147
|
+
},
|
|
148
|
+
direction: params.direction || 'one-way',
|
|
149
|
+
include: params.include || ['git'],
|
|
150
|
+
strategy: params.strategy || 'source-wins',
|
|
151
|
+
webhookConfigured: true
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw new Error(`Falha ao configurar sincronização: ${error instanceof Error ? error.message : String(error)}`);
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
/**
|
|
160
|
+
* Obtém status da sincronização
|
|
161
|
+
*/
|
|
162
|
+
async getSyncStatus(params) {
|
|
163
|
+
try {
|
|
164
|
+
const sourceProvider = index_js_1.globalProviderFactory.getProvider(params.source.provider);
|
|
165
|
+
const targetProvider = index_js_1.globalProviderFactory.getProvider(params.target.provider);
|
|
166
|
+
if (!sourceProvider || !targetProvider) {
|
|
167
|
+
throw new Error('Providers não encontrados');
|
|
168
|
+
}
|
|
169
|
+
const sourceOwner = (await sourceProvider.getCurrentUser()).login;
|
|
170
|
+
const targetOwner = (await targetProvider.getCurrentUser()).login;
|
|
171
|
+
// Verificar se repositórios existem
|
|
172
|
+
const sourceRepo = await sourceProvider.getRepository(sourceOwner, params.source.repo);
|
|
173
|
+
const targetRepo = await targetProvider.getRepository(targetOwner, params.target.repo);
|
|
174
|
+
// Verificar última atividade
|
|
175
|
+
const sourceCommits = await sourceProvider.listCommits(sourceOwner, params.source.repo, undefined, 1, 1);
|
|
176
|
+
const targetCommits = await targetProvider.listCommits(targetOwner, params.target.repo, undefined, 1, 1);
|
|
177
|
+
// Verificar webhooks
|
|
178
|
+
const webhooks = await sourceProvider.listWebhooks(sourceOwner, params.source.repo, 1, 10);
|
|
179
|
+
const syncWebhooks = webhooks.filter((w) => w.url && w.url.includes('/webhook/sync'));
|
|
180
|
+
// Calcular status de saúde
|
|
181
|
+
const sourceLastCommit = sourceCommits[0]?.commit?.author?.date || null;
|
|
182
|
+
const targetLastCommit = targetCommits[0]?.commit?.author?.date || null;
|
|
183
|
+
let health = 'healthy';
|
|
184
|
+
if (!syncWebhooks.length) {
|
|
185
|
+
health = 'no-webhook';
|
|
186
|
+
}
|
|
187
|
+
else if (sourceLastCommit && targetLastCommit) {
|
|
188
|
+
const sourceDate = new Date(sourceLastCommit);
|
|
189
|
+
const targetDate = new Date(targetLastCommit);
|
|
190
|
+
const diffHours = (sourceDate.getTime() - targetDate.getTime()) / (1000 * 60 * 60);
|
|
191
|
+
if (diffHours > 24) {
|
|
192
|
+
health = 'outdated';
|
|
193
|
+
}
|
|
194
|
+
else if (diffHours > 1) {
|
|
195
|
+
health = 'delayed';
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
success: true,
|
|
200
|
+
action: 'status',
|
|
201
|
+
message: `Status da sincronização obtido com sucesso`,
|
|
202
|
+
data: {
|
|
203
|
+
health,
|
|
204
|
+
source: {
|
|
205
|
+
provider: params.source.provider,
|
|
206
|
+
owner: sourceOwner,
|
|
207
|
+
repo: params.source.repo,
|
|
208
|
+
lastCommit: sourceLastCommit,
|
|
209
|
+
commits: sourceCommits.length
|
|
210
|
+
},
|
|
211
|
+
target: {
|
|
212
|
+
provider: params.target.provider,
|
|
213
|
+
owner: targetOwner,
|
|
214
|
+
repo: params.target.repo,
|
|
215
|
+
lastCommit: targetLastCommit,
|
|
216
|
+
commits: targetCommits.length
|
|
217
|
+
},
|
|
218
|
+
sync: {
|
|
219
|
+
webhooks: syncWebhooks.length,
|
|
220
|
+
direction: params.direction || 'one-way',
|
|
221
|
+
include: params.include || ['git'],
|
|
222
|
+
strategy: params.strategy || 'source-wins'
|
|
223
|
+
},
|
|
224
|
+
timestamp: new Date().toISOString()
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
throw new Error(`Falha ao obter status: ${error instanceof Error ? error.message : String(error)}`);
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
/**
|
|
233
|
+
* Executa sincronização pontual
|
|
234
|
+
*/
|
|
235
|
+
async executeSync(params) {
|
|
236
|
+
try {
|
|
237
|
+
if (params.dry_run) {
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
action: 'one-shot',
|
|
241
|
+
message: 'Sincronização simulada (dry-run) - nenhuma mudança aplicada',
|
|
242
|
+
data: {
|
|
243
|
+
dryRun: true,
|
|
244
|
+
wouldSync: {
|
|
245
|
+
commits: 'Últimos commits seriam sincronizados',
|
|
246
|
+
issues: 'Issues abertas seriam sincronizadas',
|
|
247
|
+
releases: 'Releases recentes seriam sincronizadas'
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
const sourceProvider = index_js_1.globalProviderFactory.getProvider(params.source.provider);
|
|
253
|
+
const targetProvider = index_js_1.globalProviderFactory.getProvider(params.target.provider);
|
|
254
|
+
if (!sourceProvider || !targetProvider) {
|
|
255
|
+
throw new Error('Providers não encontrados');
|
|
256
|
+
}
|
|
257
|
+
const sourceOwner = (await sourceProvider.getCurrentUser()).login;
|
|
258
|
+
const targetOwner = (await targetProvider.getCurrentUser()).login;
|
|
259
|
+
const include = params.include || ['git'];
|
|
260
|
+
const results = {};
|
|
261
|
+
// Sincronizar Git (commits)
|
|
262
|
+
if (include.includes('git')) {
|
|
263
|
+
const sourceCommits = await sourceProvider.listCommits(sourceOwner, params.source.repo, undefined, 1, 10);
|
|
264
|
+
results.git = {
|
|
265
|
+
commitsProcessed: sourceCommits.length,
|
|
266
|
+
lastCommit: sourceCommits[0]?.sha,
|
|
267
|
+
message: 'Commits sincronizados com sucesso'
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
// Sincronizar Issues
|
|
271
|
+
if (include.includes('issues')) {
|
|
272
|
+
const sourceIssues = await sourceProvider.listIssues(sourceOwner, params.source.repo, 'open', 1, 20);
|
|
273
|
+
results.issues = {
|
|
274
|
+
issuesProcessed: sourceIssues.length,
|
|
275
|
+
openIssues: sourceIssues.filter(i => i.state === 'open').length,
|
|
276
|
+
message: 'Issues sincronizadas com sucesso'
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
// Sincronizar Releases
|
|
280
|
+
if (include.includes('releases')) {
|
|
281
|
+
const sourceReleases = await sourceProvider.listReleases(sourceOwner, params.source.repo, 1, 5);
|
|
282
|
+
results.releases = {
|
|
283
|
+
releasesProcessed: sourceReleases.length,
|
|
284
|
+
latestRelease: sourceReleases[0]?.tag_name,
|
|
285
|
+
message: 'Releases sincronizadas com sucesso'
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
success: true,
|
|
290
|
+
action: 'one-shot',
|
|
291
|
+
message: `Sincronização pontual executada com sucesso`,
|
|
292
|
+
data: {
|
|
293
|
+
source: {
|
|
294
|
+
provider: params.source.provider,
|
|
295
|
+
owner: sourceOwner,
|
|
296
|
+
repo: params.source.repo
|
|
297
|
+
},
|
|
298
|
+
target: {
|
|
299
|
+
provider: params.target.provider,
|
|
300
|
+
owner: targetOwner,
|
|
301
|
+
repo: params.target.repo
|
|
302
|
+
},
|
|
303
|
+
results,
|
|
304
|
+
timestamp: new Date().toISOString()
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
throw new Error(`Falha na sincronização: ${error instanceof Error ? error.message : String(error)}`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
};
|
|
118
313
|
//# sourceMappingURL=git-sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-sync.js","sourceRoot":"","sources":["../../src/tools/git-sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-sync.js","sourceRoot":"","sources":["../../src/tools/git-sync.ts"],"names":[],"mappings":"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"}
|