Skip to content

Suggestion: Allow git sparse checkout / checkout specific directory #267

@wyattjsmith1

Description

@wyattjsmith1

As I have everything in a monorepo, it would be great if we could checkout specific directories as resources.

Consider a case with a monorepo with 2 services and a ci directory for task configurations:

/
|- ci
|- service-a
|- service-b

I only want to run tests on a specific service if the files within that service change, so I'd use two separate resources (named service-a/b) with the paths param set to their respective directories:

- type: git
  name: service-a
  source:
    uri: "https://my-repo"
    paths:
    - service-a/**
- {service b definition here}
- type: git
  name: ci
  source:
    uri: "https://my-repo"
    paths:
    - ci/**

I'd have two jobs, one for each service, and each job would start with a get: service-a/b and a get: ci:

- name: build-service-a
  plan:
  - get: service-a
    trigger: true
  - get: ci
  - task: build
    file: ci/ci/task.yaml

This is great, but it doesn't actually clone service-x and ci into the task working directory, it clones the entire repository. In the case above, the task directory would contain two instances of the monorepo, just named differently. There is no technical issue with this, but it is annoying and confusing to have to prepend /ci/ci when specifying my task.

I believe allowing a git resource to clone a sub-directory of the repository would solve this issue easily.

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