Skip to content

fix/lfs.customtransfer.drs.* #198

@bwalsh

Description

@bwalsh

Proposal: Namespace all git-drs configuration under lfs.customtransfer.drs.*

Summary

Standardize all git-drs configuration so that every config key is namespaced under:

lfs.customtransfer.drs.*

This aligns git-drs with Git LFS custom transfer conventions, avoids global namespace pollution, and makes configuration intent unambiguous.


Current State

The current configuration mixes LFS-scoped keys with global drs.* keys:

lfs.standalonetransferagent=drs
lfs.customtransfer.drs.path=git-drs
lfs.customtransfer.drs.upsert=true
lfs.customtransfer.drs.multipart-threshold=10
lfs.customtransfer.drs.args=transfer
lfs.customtransfer.drs.concurrent=true
lfs.customtransfer.drs.enable-data-client-logs=false

drs.default-remote=calypr-dev
drs.remote.calypr-dev.type=gen3
drs.remote.calypr-dev.endpoint=https://calypr-dev.ohsu.edu/
drs.remote.calypr-dev.project=cbds-monorepos
drs.remote.calypr-dev.bucket=cbds

Problems With the Current Layout

1. Namespace pollution

Using top-level drs.* keys pollutes the global git config namespace and risks collisions.

2. Ambiguous ownership

These settings are only meaningful to the drs LFS transfer agent.

3. Harder debugging

Users expect LFS-related config under lfs.*.

4. Inconsistent with Git LFS patterns

Git LFS extensions consistently scope under lfs.customtransfer.<name>.*.


Proposed Change

All git-drs configuration must live under:

lfs.customtransfer.drs.*

Mapping

Current key Proposed key
drs.default-remote lfs.customtransfer.drs.default-remote
drs.remote.<name>.type lfs.customtransfer.drs.remote.<name>.type
drs.remote.<name>.endpoint lfs.customtransfer.drs.remote.<name>.endpoint
drs.remote.<name>.project lfs.customtransfer.drs.remote.<name>.project
drs.remote.<name>.bucket lfs.customtransfer.drs.remote.<name>.bucket

Backward Compatibility

Support both namespaces temporarily and emit a deprecation warning for drs.*.


Recommendation

Adopt a strict rule:

All configuration consumed by the drs Git LFS transfer agent must be prefixed with lfs.customtransfer.drs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions