Skip to content

WIP - Ndjson group support format

This is a PoC for ndjson/legacy Writer and TreeSaver that will support non recursive Group export/import

FatJson - With legacy writer, when ndjson feature flag is not enabled:

[
  {
    "id": 22,
    "name": "Gitlab Org",
    "path": "gitlab-org",
    "description": "Rerum soluta quae et similique aliquam doloremque facere.",
    "avatar": {},
    "membership_lock": false,
    "share_with_group_lock": false,
    "request_access_enabled": true,
    "ldap_sync_status": "ready",
    "ldap_sync_error": null,
    "ldap_sync_last_update_at": null,
    "ldap_sync_last_successful_update_at": null,
    "ldap_sync_last_sync_at": null,
    "lfs_enabled": null,
    "parent_id": null,
    "shared_runners_minutes_limit": null,
    "repository_size_limit": null,
    "require_two_factor_authentication": false,
    "two_factor_grace_period": 48,
    "plan_id": null,
    "project_creation_level": 2,
    "trial_ends_on": null,
    "file_template_project_id": null,
    "custom_project_templates_group_id": null,
    "auto_devops_enabled": null,
    "extra_shared_runners_minutes_limit": null,
    "last_ci_minutes_notification_at": null,
    "last_ci_minutes_usage_notification_level": null,
    "subgroup_creation_level": 1,
    "emails_disabled": null,
    "max_pages_size": null,
    "max_artifacts_size": null,
    "mentions_disabled": null,
    "labels": [...],
    "members": [...],
    "epics": [...]
  },
  {
    "id": 23,
    "name": "Gnuwget",
    "path": "gnuwget",
    "description": "Aperiam voluptas iure eum eaque voluptates.",
    "avatar": {},
    "membership_lock": false,
    "share_with_group_lock": false,
    "request_access_enabled": true,
    "ldap_sync_status": "ready",
    "ldap_sync_error": null,
    "ldap_sync_last_update_at": null,
    "ldap_sync_last_successful_update_at": null,
    "ldap_sync_last_sync_at": null,
    "lfs_enabled": null,
    "parent_id": 22,
    "shared_runners_minutes_limit": null,
    "repository_size_limit": null,
    "require_two_factor_authentication": false,
    "two_factor_grace_period": 48,
    "plan_id": null,
    "project_creation_level": 2,
    "trial_ends_on": null,
    "file_template_project_id": null,
    "custom_project_templates_group_id": null,
    "auto_devops_enabled": null,
    "extra_shared_runners_minutes_limit": null,
    "last_ci_minutes_notification_at": null,
    "last_ci_minutes_usage_notification_level": null,
    "subgroup_creation_level": 1,
    "emails_disabled": null,
    "max_pages_size": null,
    "max_artifacts_size": null,
    "mentions_disabled": null,
    "labels": [...],
    "members": [...],
    "epics": [...]
  }
]

NDJSON

We are storing each group in separate folder, except root group, which is stored in root folder

We would have same flatten structure as above, but instead of array, we will have separate folder for each element, except for the root one. (or we can store root in folder as well - 0? )

ndjson

Edited by 🤖 GitLab Bot 🤖

Merge request reports