github2gerrit 0.1.15__py3-none-any.whl → 0.1.17__py3-none-any.whl
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.
- github2gerrit/cli.py +50 -8
- github2gerrit/core.py +331 -21
- {github2gerrit-0.1.15.dist-info → github2gerrit-0.1.17.dist-info}/METADATA +1 -1
- {github2gerrit-0.1.15.dist-info → github2gerrit-0.1.17.dist-info}/RECORD +7 -7
- {github2gerrit-0.1.15.dist-info → github2gerrit-0.1.17.dist-info}/WHEEL +0 -0
- {github2gerrit-0.1.15.dist-info → github2gerrit-0.1.17.dist-info}/entry_points.txt +0 -0
- {github2gerrit-0.1.15.dist-info → github2gerrit-0.1.17.dist-info}/licenses/LICENSE +0 -0
github2gerrit/cli.py
CHANGED
@@ -36,6 +36,7 @@ from .github_api import get_pr_title_body
|
|
36
36
|
from .github_api import get_pull
|
37
37
|
from .github_api import get_repo_from_env
|
38
38
|
from .github_api import iter_open_pulls
|
39
|
+
from .gitutils import CommandError
|
39
40
|
from .gitutils import run_cmd
|
40
41
|
from .models import GitHubContext
|
41
42
|
from .models import Inputs
|
@@ -246,7 +247,7 @@ if "--help" in sys.argv or _is_github_actions_context():
|
|
246
247
|
|
247
248
|
app: typer.Typer = typer.Typer(
|
248
249
|
add_completion=False,
|
249
|
-
no_args_is_help=
|
250
|
+
no_args_is_help=True,
|
250
251
|
cls=cast(Any, _SingleUsageGroup),
|
251
252
|
rich_markup_mode="rich",
|
252
253
|
help="Tool to convert GitHub pull requests into Gerrit changes",
|
@@ -990,15 +991,56 @@ def _process_single(
|
|
990
991
|
else:
|
991
992
|
progress_tracker.change_updated()
|
992
993
|
except Exception as exc:
|
993
|
-
|
994
|
-
|
994
|
+
# Enhanced error handling for CommandError to show git command
|
995
|
+
# details
|
996
|
+
if isinstance(exc, CommandError):
|
997
|
+
# Always show the basic error message
|
998
|
+
cmd_str = " ".join(exc.cmd) if exc.cmd else "unknown command"
|
999
|
+
basic_error = f"Git command failed: {cmd_str}"
|
1000
|
+
if exc.returncode is not None:
|
1001
|
+
basic_error += f" (exit code: {exc.returncode})"
|
1002
|
+
|
1003
|
+
# In verbose mode, show detailed stdout/stderr
|
1004
|
+
if is_verbose_mode():
|
1005
|
+
detailed_msg = basic_error
|
1006
|
+
if exc.stdout and exc.stdout.strip():
|
1007
|
+
detailed_msg += f"\nGit stdout: {exc.stdout.strip()}"
|
1008
|
+
if exc.stderr and exc.stderr.strip():
|
1009
|
+
detailed_msg += f"\nGit stderr: {exc.stderr.strip()}"
|
1010
|
+
|
1011
|
+
# Show debugging suggestion for merge failures
|
1012
|
+
if "merge --squash" in " ".join(exc.cmd or []):
|
1013
|
+
detailed_msg += (
|
1014
|
+
"\n💡 For local debugging: python "
|
1015
|
+
"test_merge_failure.py --verbose"
|
1016
|
+
)
|
995
1017
|
|
996
|
-
|
997
|
-
|
998
|
-
|
1018
|
+
safe_console_print(f"❌ {detailed_msg}", style="red")
|
1019
|
+
if progress_tracker:
|
1020
|
+
progress_tracker.add_error(basic_error)
|
1021
|
+
if exc.stderr and exc.stderr.strip():
|
1022
|
+
progress_tracker.add_error(
|
1023
|
+
f"Details: {exc.stderr.strip()}"
|
1024
|
+
)
|
1025
|
+
else:
|
1026
|
+
# In non-verbose mode, show basic error with hint to enable
|
1027
|
+
# verbose
|
1028
|
+
hint_msg = (
|
1029
|
+
basic_error
|
1030
|
+
+ "\n💡 Run with VERBOSE=true for detailed git output"
|
1031
|
+
)
|
1032
|
+
safe_console_print(f"❌ {hint_msg}", style="red")
|
1033
|
+
if progress_tracker:
|
1034
|
+
progress_tracker.add_error(basic_error)
|
999
1035
|
else:
|
1000
|
-
#
|
1001
|
-
|
1036
|
+
# For other exceptions, use original handling
|
1037
|
+
error_msg = str(exc)
|
1038
|
+
if progress_tracker:
|
1039
|
+
progress_tracker.add_error(f"Execution failed: {error_msg}")
|
1040
|
+
else:
|
1041
|
+
safe_console_print(f"❌ Error: {error_msg}", style="red")
|
1042
|
+
|
1043
|
+
log.debug("Execution failed; continuing to write outputs: %s", exc)
|
1002
1044
|
|
1003
1045
|
# In verbose mode, also log the full exception with traceback
|
1004
1046
|
if is_verbose_mode():
|
github2gerrit/core.py
CHANGED
@@ -1749,6 +1749,10 @@ class Orchestrator:
|
|
1749
1749
|
) -> None:
|
1750
1750
|
"""Set git global config and initialize git-review if needed."""
|
1751
1751
|
log.debug("Configuring git and git-review for %s", gerrit.host)
|
1752
|
+
|
1753
|
+
# Configure git user identity (required for merge operations)
|
1754
|
+
self._ensure_git_user_identity(inputs)
|
1755
|
+
|
1752
1756
|
# Prefer repo-local config; fallback to global if needed
|
1753
1757
|
try:
|
1754
1758
|
git_config(
|
@@ -1761,26 +1765,7 @@ class Orchestrator:
|
|
1761
1765
|
git_config(
|
1762
1766
|
"gitreview.username", inputs.gerrit_ssh_user_g2g, global_=True
|
1763
1767
|
)
|
1764
|
-
|
1765
|
-
git_config(
|
1766
|
-
"user.name",
|
1767
|
-
inputs.gerrit_ssh_user_g2g,
|
1768
|
-
global_=False,
|
1769
|
-
cwd=self.workspace,
|
1770
|
-
)
|
1771
|
-
except GitError:
|
1772
|
-
git_config("user.name", inputs.gerrit_ssh_user_g2g, global_=True)
|
1773
|
-
try:
|
1774
|
-
git_config(
|
1775
|
-
"user.email",
|
1776
|
-
inputs.gerrit_ssh_user_g2g_email,
|
1777
|
-
global_=False,
|
1778
|
-
cwd=self.workspace,
|
1779
|
-
)
|
1780
|
-
except GitError:
|
1781
|
-
git_config(
|
1782
|
-
"user.email", inputs.gerrit_ssh_user_g2g_email, global_=True
|
1783
|
-
)
|
1768
|
+
# Git user identity is configured by _ensure_git_user_identity
|
1784
1769
|
# Disable GPG signing to avoid interactive prompts for signing keys
|
1785
1770
|
try:
|
1786
1771
|
git_config(
|
@@ -2028,10 +2013,99 @@ class Orchestrator:
|
|
2028
2013
|
# Create temp branch from base and merge-squash PR head
|
2029
2014
|
tmp_branch = f"g2g_tmp_{gh.pr_number or 'pr'!s}_{os.getpid()}"
|
2030
2015
|
os.environ["G2G_TMP_BRANCH"] = tmp_branch
|
2016
|
+
|
2017
|
+
log.debug(
|
2018
|
+
"Git merge preparation: base_sha=%s, head_sha=%s, tmp_branch=%s",
|
2019
|
+
base_sha,
|
2020
|
+
head_sha,
|
2021
|
+
tmp_branch,
|
2022
|
+
)
|
2023
|
+
|
2024
|
+
# Check if we have any commits to merge
|
2025
|
+
try:
|
2026
|
+
merge_base = run_cmd(
|
2027
|
+
["git", "merge-base", base_sha, head_sha], cwd=self.workspace
|
2028
|
+
).stdout.strip()
|
2029
|
+
log.debug("Merge base: %s", merge_base)
|
2030
|
+
|
2031
|
+
# Check if there are any commits between base and head
|
2032
|
+
commits_to_merge = run_cmd(
|
2033
|
+
["git", "rev-list", f"{base_sha}..{head_sha}"],
|
2034
|
+
cwd=self.workspace,
|
2035
|
+
).stdout.strip()
|
2036
|
+
if not commits_to_merge:
|
2037
|
+
log.warning(
|
2038
|
+
"No commits found between base (%s) and head (%s)",
|
2039
|
+
base_sha,
|
2040
|
+
head_sha,
|
2041
|
+
)
|
2042
|
+
else:
|
2043
|
+
commit_count = len(commits_to_merge.splitlines())
|
2044
|
+
log.debug("Found %d commits to merge", commit_count)
|
2045
|
+
|
2046
|
+
except Exception as debug_exc:
|
2047
|
+
log.warning("Failed to analyze merge situation: %s", debug_exc)
|
2048
|
+
|
2031
2049
|
run_cmd(
|
2032
2050
|
["git", "checkout", "-b", tmp_branch, base_sha], cwd=self.workspace
|
2033
2051
|
)
|
2034
|
-
|
2052
|
+
|
2053
|
+
# Show git status before attempting merge
|
2054
|
+
try:
|
2055
|
+
status_output = run_cmd(
|
2056
|
+
["git", "status", "--porcelain"], cwd=self.workspace
|
2057
|
+
).stdout
|
2058
|
+
if status_output.strip():
|
2059
|
+
log.debug(
|
2060
|
+
"Git status before merge (modified files detected):\n%s",
|
2061
|
+
status_output,
|
2062
|
+
)
|
2063
|
+
else:
|
2064
|
+
log.debug("Git status before merge: working directory clean")
|
2065
|
+
|
2066
|
+
# Show current branch
|
2067
|
+
current_branch = run_cmd(
|
2068
|
+
["git", "branch", "--show-current"], cwd=self.workspace
|
2069
|
+
).stdout.strip()
|
2070
|
+
log.debug("Current branch before merge: %s", current_branch)
|
2071
|
+
|
2072
|
+
except Exception as status_exc:
|
2073
|
+
log.warning("Failed to get git status before merge: %s", status_exc)
|
2074
|
+
|
2075
|
+
log.debug("About to run: git merge --squash %s", head_sha)
|
2076
|
+
try:
|
2077
|
+
run_cmd(["git", "merge", "--squash", head_sha], cwd=self.workspace)
|
2078
|
+
except CommandError as merge_exc:
|
2079
|
+
# Enhanced error handling for git merge failures
|
2080
|
+
error_details = self._analyze_merge_failure(
|
2081
|
+
merge_exc, base_sha, head_sha
|
2082
|
+
)
|
2083
|
+
|
2084
|
+
# Try to provide recovery suggestions
|
2085
|
+
recovery_msg = self._suggest_merge_recovery(
|
2086
|
+
merge_exc, base_sha, head_sha
|
2087
|
+
)
|
2088
|
+
|
2089
|
+
# Log detailed error information
|
2090
|
+
log.exception("Git merge --squash failed: %s", error_details)
|
2091
|
+
if recovery_msg:
|
2092
|
+
log.exception("Suggested recovery: %s", recovery_msg)
|
2093
|
+
|
2094
|
+
# Enhanced debugging if verbose mode is enabled
|
2095
|
+
from .utils import is_verbose_mode
|
2096
|
+
|
2097
|
+
if is_verbose_mode():
|
2098
|
+
self._debug_merge_failure_context(base_sha, head_sha)
|
2099
|
+
|
2100
|
+
# Re-raise with enhanced context
|
2101
|
+
raise OrchestratorError(
|
2102
|
+
f"Failed to merge PR commits: {error_details}"
|
2103
|
+
+ (
|
2104
|
+
f"\nSuggested recovery: {recovery_msg}"
|
2105
|
+
if recovery_msg
|
2106
|
+
else ""
|
2107
|
+
)
|
2108
|
+
) from merge_exc
|
2035
2109
|
|
2036
2110
|
def _collect_log_lines() -> list[str]:
|
2037
2111
|
body = run_cmd(
|
@@ -4260,6 +4334,242 @@ class Orchestrator:
|
|
4260
4334
|
except Exception as exc:
|
4261
4335
|
log.debug("File validation failed (non-critical): %s", exc)
|
4262
4336
|
|
4337
|
+
def _analyze_merge_failure(
|
4338
|
+
self, merge_exc: CommandError, base_sha: str, head_sha: str
|
4339
|
+
) -> str:
|
4340
|
+
"""Analyze git merge failure and provide detailed error information."""
|
4341
|
+
error_parts = []
|
4342
|
+
|
4343
|
+
# Include basic command info
|
4344
|
+
if merge_exc.cmd:
|
4345
|
+
error_parts.append(f"Command: {' '.join(merge_exc.cmd)}")
|
4346
|
+
if merge_exc.returncode is not None:
|
4347
|
+
error_parts.append(f"Exit code: {merge_exc.returncode}")
|
4348
|
+
|
4349
|
+
# Analyze stderr for common patterns
|
4350
|
+
stderr = merge_exc.stderr or ""
|
4351
|
+
if "conflict" in stderr.lower():
|
4352
|
+
error_parts.append("Merge conflicts detected")
|
4353
|
+
if "abort" in stderr.lower():
|
4354
|
+
error_parts.append("Merge was aborted")
|
4355
|
+
if "fatal" in stderr.lower():
|
4356
|
+
error_parts.append("Fatal git error occurred")
|
4357
|
+
|
4358
|
+
# Include actual git output
|
4359
|
+
if merge_exc.stdout and merge_exc.stdout.strip():
|
4360
|
+
error_parts.append(f"Git output: {merge_exc.stdout.strip()}")
|
4361
|
+
if stderr and stderr.strip():
|
4362
|
+
error_parts.append(f"Git error: {stderr.strip()}")
|
4363
|
+
|
4364
|
+
return (
|
4365
|
+
"; ".join(error_parts) if error_parts else "Unknown merge failure"
|
4366
|
+
)
|
4367
|
+
|
4368
|
+
def _suggest_merge_recovery(
|
4369
|
+
self, merge_exc: CommandError, base_sha: str, head_sha: str
|
4370
|
+
) -> str:
|
4371
|
+
"""Suggest recovery actions based on merge failure analysis."""
|
4372
|
+
stderr = (merge_exc.stderr or "").lower()
|
4373
|
+
|
4374
|
+
if (
|
4375
|
+
"committer identity unknown" in stderr
|
4376
|
+
or "empty ident name" in stderr
|
4377
|
+
):
|
4378
|
+
return (
|
4379
|
+
"Git user identity not configured - this should be handled "
|
4380
|
+
"automatically by the tool. Please report this as a bug."
|
4381
|
+
)
|
4382
|
+
elif "conflict" in stderr:
|
4383
|
+
return "Check for merge conflicts in the PR files and resolve them"
|
4384
|
+
elif "fatal: refusing to merge unrelated histories" in stderr:
|
4385
|
+
return (
|
4386
|
+
"The branches have unrelated histories - check if the PR "
|
4387
|
+
"branch is based on the correct target"
|
4388
|
+
)
|
4389
|
+
elif "nothing to commit" in stderr:
|
4390
|
+
return (
|
4391
|
+
"No changes to merge - the PR may already be merged or have "
|
4392
|
+
"no differences"
|
4393
|
+
)
|
4394
|
+
elif "abort" in stderr:
|
4395
|
+
return (
|
4396
|
+
"Previous merge operation may have been interrupted - check "
|
4397
|
+
"repository state"
|
4398
|
+
)
|
4399
|
+
|
4400
|
+
# Try to provide generic guidance
|
4401
|
+
try:
|
4402
|
+
# Check if commits exist between base and head
|
4403
|
+
commits_cmd = ["git", "rev-list", f"{base_sha}..{head_sha}"]
|
4404
|
+
commits_result = run_cmd(
|
4405
|
+
commits_cmd, cwd=self.workspace, check=False
|
4406
|
+
)
|
4407
|
+
if (
|
4408
|
+
commits_result.returncode == 0
|
4409
|
+
and not commits_result.stdout.strip()
|
4410
|
+
):
|
4411
|
+
return (
|
4412
|
+
"No commits found between base and head - PR may be empty "
|
4413
|
+
"or already merged"
|
4414
|
+
)
|
4415
|
+
except Exception as e:
|
4416
|
+
log.debug(
|
4417
|
+
"Failed to check commit range for recovery suggestion: %s", e
|
4418
|
+
)
|
4419
|
+
|
4420
|
+
return (
|
4421
|
+
"Review git repository state and ensure PR branch is properly "
|
4422
|
+
"synchronized with target"
|
4423
|
+
)
|
4424
|
+
|
4425
|
+
def _debug_merge_failure_context(
|
4426
|
+
self, base_sha: str, head_sha: str
|
4427
|
+
) -> None:
|
4428
|
+
"""Provide extensive debugging context for merge failures when verbose mode is enabled.""" # noqa: E501
|
4429
|
+
log.error("=== VERBOSE MODE: Extended merge failure analysis ===")
|
4430
|
+
|
4431
|
+
try:
|
4432
|
+
# Show detailed git log between base and head
|
4433
|
+
log_result = run_cmd(
|
4434
|
+
[
|
4435
|
+
"git",
|
4436
|
+
"log",
|
4437
|
+
"--oneline",
|
4438
|
+
"--graph",
|
4439
|
+
f"{base_sha}..{head_sha}",
|
4440
|
+
],
|
4441
|
+
cwd=self.workspace,
|
4442
|
+
check=False,
|
4443
|
+
)
|
4444
|
+
if log_result.returncode == 0:
|
4445
|
+
log.error("Commits to be merged:\n%s", log_result.stdout)
|
4446
|
+
else:
|
4447
|
+
log.error("Failed to get commit log: %s", log_result.stderr)
|
4448
|
+
|
4449
|
+
# Show file differences
|
4450
|
+
diff_result = run_cmd(
|
4451
|
+
["git", "diff", "--name-status", base_sha, head_sha],
|
4452
|
+
cwd=self.workspace,
|
4453
|
+
check=False,
|
4454
|
+
)
|
4455
|
+
if diff_result.returncode == 0:
|
4456
|
+
log.error(
|
4457
|
+
"Files changed between base and head:\n%s",
|
4458
|
+
diff_result.stdout,
|
4459
|
+
)
|
4460
|
+
|
4461
|
+
# Show merge-base information
|
4462
|
+
merge_base_result = run_cmd(
|
4463
|
+
["git", "merge-base", "--is-ancestor", base_sha, head_sha],
|
4464
|
+
cwd=self.workspace,
|
4465
|
+
check=False,
|
4466
|
+
)
|
4467
|
+
if merge_base_result.returncode == 0:
|
4468
|
+
log.error(
|
4469
|
+
"Base SHA %s is an ancestor of head SHA %s",
|
4470
|
+
base_sha[:8],
|
4471
|
+
head_sha[:8],
|
4472
|
+
)
|
4473
|
+
else:
|
4474
|
+
log.error(
|
4475
|
+
"Base SHA %s is NOT an ancestor of head SHA %s",
|
4476
|
+
base_sha[:8],
|
4477
|
+
head_sha[:8],
|
4478
|
+
)
|
4479
|
+
|
4480
|
+
# Show current repository state
|
4481
|
+
status_result = run_cmd(
|
4482
|
+
["git", "status", "--porcelain"],
|
4483
|
+
cwd=self.workspace,
|
4484
|
+
check=False,
|
4485
|
+
)
|
4486
|
+
if status_result.stdout.strip():
|
4487
|
+
log.error(
|
4488
|
+
"Repository has uncommitted changes:\n%s",
|
4489
|
+
status_result.stdout,
|
4490
|
+
)
|
4491
|
+
|
4492
|
+
# Show current branch and HEAD
|
4493
|
+
branch_result = run_cmd(
|
4494
|
+
["git", "branch", "--show-current"],
|
4495
|
+
cwd=self.workspace,
|
4496
|
+
check=False,
|
4497
|
+
)
|
4498
|
+
if branch_result.returncode == 0:
|
4499
|
+
log.error("Current branch: %s", branch_result.stdout.strip())
|
4500
|
+
|
4501
|
+
head_result = run_cmd(
|
4502
|
+
["git", "rev-parse", "HEAD"], cwd=self.workspace, check=False
|
4503
|
+
)
|
4504
|
+
if head_result.returncode == 0:
|
4505
|
+
log.error("Current HEAD: %s", head_result.stdout.strip())
|
4506
|
+
|
4507
|
+
except Exception:
|
4508
|
+
log.exception("Failed to gather debug context")
|
4509
|
+
|
4510
|
+
log.error("=== End verbose merge failure analysis ===")
|
4511
|
+
|
4512
|
+
def _ensure_git_user_identity(self, inputs: Inputs) -> None:
|
4513
|
+
"""Ensure git user identity is configured for merge operations."""
|
4514
|
+
log.debug("Ensuring git user identity is configured")
|
4515
|
+
|
4516
|
+
# Check if user.name and user.email are already configured
|
4517
|
+
try:
|
4518
|
+
name_result = run_cmd(
|
4519
|
+
["git", "config", "user.name"], cwd=self.workspace, check=False
|
4520
|
+
)
|
4521
|
+
email_result = run_cmd(
|
4522
|
+
["git", "config", "user.email"], cwd=self.workspace, check=False
|
4523
|
+
)
|
4524
|
+
|
4525
|
+
if (
|
4526
|
+
name_result.returncode == 0
|
4527
|
+
and name_result.stdout.strip()
|
4528
|
+
and email_result.returncode == 0
|
4529
|
+
and email_result.stdout.strip()
|
4530
|
+
):
|
4531
|
+
log.debug(
|
4532
|
+
"Git user identity already configured: %s <%s>",
|
4533
|
+
name_result.stdout.strip(),
|
4534
|
+
email_result.stdout.strip(),
|
4535
|
+
)
|
4536
|
+
return
|
4537
|
+
|
4538
|
+
except Exception as e:
|
4539
|
+
log.debug("Failed to check existing git identity: %s", e)
|
4540
|
+
|
4541
|
+
# Configure git identity using Gerrit credentials
|
4542
|
+
user_name = inputs.gerrit_ssh_user_g2g or "github2gerrit-bot"
|
4543
|
+
user_email = (
|
4544
|
+
inputs.gerrit_ssh_user_g2g_email or "github2gerrit@example.com"
|
4545
|
+
)
|
4546
|
+
|
4547
|
+
log.debug("Configuring git identity: %s <%s>", user_name, user_email)
|
4548
|
+
|
4549
|
+
try:
|
4550
|
+
# Set local repository identity
|
4551
|
+
run_cmd(
|
4552
|
+
["git", "config", "user.name", user_name], cwd=self.workspace
|
4553
|
+
)
|
4554
|
+
run_cmd(
|
4555
|
+
["git", "config", "user.email", user_email], cwd=self.workspace
|
4556
|
+
)
|
4557
|
+
log.debug("Successfully configured git user identity")
|
4558
|
+
|
4559
|
+
except CommandError as e:
|
4560
|
+
# Fallback to global config if local fails
|
4561
|
+
log.warning(
|
4562
|
+
"Failed to set local git identity, trying global: %s", e
|
4563
|
+
)
|
4564
|
+
try:
|
4565
|
+
run_cmd(["git", "config", "--global", "user.name", user_name])
|
4566
|
+
run_cmd(["git", "config", "--global", "user.email", user_email])
|
4567
|
+
log.debug("Successfully configured global git user identity")
|
4568
|
+
except CommandError as global_e:
|
4569
|
+
log.exception("Failed to configure git user identity")
|
4570
|
+
msg = "Cannot configure git user identity"
|
4571
|
+
raise OrchestratorError(msg) from global_e
|
4572
|
+
|
4263
4573
|
|
4264
4574
|
# ---------------------
|
4265
4575
|
# Utility functions
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: github2gerrit
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.17
|
4
4
|
Summary: Submit a GitHub pull request to a Gerrit repository.
|
5
5
|
Project-URL: Homepage, https://github.com/lfreleng-actions/github2gerrit
|
6
6
|
Project-URL: Repository, https://github.com/lfreleng-actions/github2gerrit
|
@@ -1,8 +1,8 @@
|
|
1
1
|
github2gerrit/__init__.py,sha256=N1Vj1HJ28LKCJLAynQdm5jFGQQAz9YSMzZhEfvbBgow,886
|
2
|
-
github2gerrit/cli.py,sha256=
|
2
|
+
github2gerrit/cli.py,sha256=edQGODSo0A1RfvO0C7zAjWwIZCnt4RT67BnJwgL0MAY,67843
|
3
3
|
github2gerrit/commit_normalization.py,sha256=5HqUJ7p3WQzUYNTkganIsu82aW1wZrh7J7ivQvdCYXw,17033
|
4
4
|
github2gerrit/config.py,sha256=khuXAfmOc2wqO4r1Cpp8PYk04AO-JpmnJvSWQZ3fdL8,22315
|
5
|
-
github2gerrit/core.py,sha256=
|
5
|
+
github2gerrit/core.py,sha256=VlhzlZEo9DGd6Fn2WTx_5TDR9OmbpZ1t1-GmVA92TVM,174687
|
6
6
|
github2gerrit/duplicate_detection.py,sha256=HSL1IpyfPk0yLkzCKA8mWadYB3qENR6Ar3AfiH59lCI,28766
|
7
7
|
github2gerrit/external_api.py,sha256=9483kkgIs1ECOl_f0lcGb8GrJQF9IfYmWfBQwUJT9hk,18480
|
8
8
|
github2gerrit/gerrit_query.py,sha256=7AR9UEwZxtTb9V-l17UDdtWvlvROlnIeJVMa57ilf6s,8343
|
@@ -24,8 +24,8 @@ github2gerrit/trailers.py,sha256=9w0vIxPNBNQp56sIy-MF62d22Rm6vY-msh9ao1lX0rQ,838
|
|
24
24
|
github2gerrit/utils.py,sha256=1CKTsQo_FO3eyVjzNUT3XyFnyObIxyEFLeSmVKzavVo,3397
|
25
25
|
github2gerrit/orchestrator/__init__.py,sha256=HAEcdCAHOFr8LsdIwAdcIcFZn_ayMbX9rdVUULp8410,864
|
26
26
|
github2gerrit/orchestrator/reconciliation.py,sha256=qLhmjnIblSa_PVmBblWJ1gSvJ6Gto2AIVOVdYvT6zbk,18364
|
27
|
-
github2gerrit-0.1.
|
28
|
-
github2gerrit-0.1.
|
29
|
-
github2gerrit-0.1.
|
30
|
-
github2gerrit-0.1.
|
31
|
-
github2gerrit-0.1.
|
27
|
+
github2gerrit-0.1.17.dist-info/METADATA,sha256=AscYuKk_-EZkZt4LhTbX3vVeWW78nwPY4yOeyBlNaZM,33833
|
28
|
+
github2gerrit-0.1.17.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
29
|
+
github2gerrit-0.1.17.dist-info/entry_points.txt,sha256=MxN2_liIKo3-xJwtAulAeS5GcOS6JS96nvwOQIkP3W8,56
|
30
|
+
github2gerrit-0.1.17.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
31
|
+
github2gerrit-0.1.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|