Skip to content

Commit 384c3b5

Browse files
authored
fix: add support for extracted activities in git integration v2 (#3370)
1 parent c7c4e94 commit 384c3b5

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

services/apps/git_integration/src/crowdgit/services/commit/commit_service.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,11 @@ def create_activities_from_commit(
437437
Args:
438438
remote: The remote repository URL
439439
commit: The commit dictionary containing commit data
440+
segment_id: Segment identifier
441+
integration_id: Integration identifier
440442
441443
Returns:
442-
List of activity dictionaries
444+
Tuple of (activities_db, activities_queue) lists
443445
"""
444446
activities_db = []
445447
activities_queue = []
@@ -497,6 +499,40 @@ def create_activities_from_commit(
497499
activities_db.append(activity_db)
498500
activities_queue.append(activity_kafka)
499501

502+
# Process extracted activities from commit message
503+
extracted_activities = CommitService.extract_activities(commit["message"])
504+
for extracted_activity in extracted_activities:
505+
activity_type, member_data = list(extracted_activity.items())[0]
506+
507+
# Convert activity type to lowercase and add "-commit" suffix
508+
# This matches the legacy behavior: "signed-off-by" -> "signed-off-commit"
509+
activity_type = activity_type.lower().replace("-by", "") + "-commit"
510+
511+
member = {
512+
"username": member_data["email"],
513+
"displayName": member_data["name"],
514+
"emails": [member_data["email"]],
515+
}
516+
517+
# Generate unique source ID for extracted activity
518+
source_id = hashlib.sha1(
519+
(commit_hash + activity_type + member_data["email"]).encode("utf-8")
520+
).hexdigest()
521+
activity = CommitService.create_activity(
522+
remote=remote,
523+
commit=commit,
524+
activity_type=activity_type,
525+
member=member,
526+
source_id=source_id,
527+
source_parent_id=commit_hash,
528+
segment_id=segment_id,
529+
)
530+
activity_db, activity_kafka = CommitService.prepare_activity_for_db_and_queue(
531+
activity, segment_id, integration_id
532+
)
533+
activities_db.append(activity_db)
534+
activities_queue.append(activity_kafka)
535+
500536
return activities_db, activities_queue
501537

502538
@staticmethod

services/apps/git_integration/src/crowdgit/settings.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ def load_env_var(key: str, required=True, default=None):
1515
CROWD_DB_DATABASE = load_env_var("CROWD_DB_DATABASE")
1616
WORKER_POLLING_INTERVAL_SEC = int(load_env_var("WORKER_POLLING_INTERVAL_SEC", default=5))
1717
WORKER_ERROR_BACKOFF_SEC = int(load_env_var("WORKER_ERROR_BACKOFF_SEC", default=10))
18-
REPOSITORY_UPDATE_INTERVAL_HOURS = int(load_env_var("REPOSITORY_UPDATE_INTERVAL_HOURS", default=24))
18+
REPOSITORY_UPDATE_INTERVAL_HOURS = int(
19+
load_env_var("REPOSITORY_UPDATE_INTERVAL_HOURS", default=24)
20+
)
1921
MAX_WORKER_PROCESSES = int(load_env_var("MAX_WORKER_PROCESSES", default=min(4, os.cpu_count())))
2022
DEFAULT_TENANT_ID = load_env_var(
2123
"CROWD_SSO_LF_TENANT_ID", default="875c38bd-2b1b-4e91-ad07-0cfbabb4c49f"

0 commit comments

Comments
 (0)