#
# This file should not be processed directly
# Please use the ASF::SVN and ASF::Git APIs instead
#
---
:git:

  # For ruby2js demo only (see www/ruby2js.cgi)
  ruby2js:
    url: https://github.com/rubys/ruby2js.git
    depth: 1

# N.B. the names in the section below should not be changed as they are used by Ruby
# Entries that are not intended to have local workspaces are indicated by: 'depth: skip'
# Such entries are for url lookup only, e.g. Bills

# names that are list only have 'depth: delete'
# This is decoupled from list to allow a gradual changeover

# The url: entries below are relative to the @base value defined in ASF::SVN
# This defaults to https://svn.apache.org/repos/

:svn:

  Bills:
    url: private/financials/Bills
    depth: skip


  Meetings:
    url: private/foundation/Meetings

  acreq: # for account requests
    url: infra/infrastructure/trunk/acreq
    depth: skip

  apachecon:
    url: private/foundation/ApacheCon
    depth: empty
    files:
      - apacheconhistory.csv

  apmail_bin:
    url: infra/infrastructure/apmail/trunk/bin
    depth: empty
    files:
      - mail_list_autosub.yml

  attic-xdocs:
    url: asf/attic/site/xdocs/projects
    depth: delete
    list: true

  board:
    url: private/committers/board
    depth: empty
    files:
      - calendar.txt
      - committee-info.txt
      - committee-info.yaml

  brandlist:
    url: private/foundation/Brand
    depth: empty
    files:
      - docket.json

  cclas:
    url: private/documents/cclas
    depth: skip

  comdev-foundation:
    url: asf/comdev/projects.apache.org/trunk/site/json/foundation
    depth: empty
    files:
      - projects.json

  comdevtalks:
    url: asf/comdev/site/trunk/content/speakers/talks
    depth: files

  committers:
    url: private/committers
    depth: skip

  conflict-of-interest:
    url: private/documents/conflict-of-interest
    depth: skip

  distrel:
    url: https://dist.apache.org/repos/dist/release
    depth: delete
    list: true

  distrelinc:
    url: https://dist.apache.org/repos/dist/release/incubator
    depth: delete
    list: true

  distdevinc:
    url: https://dist.apache.org/repos/dist/dev/incubator
    depth: delete
    list: true

  emeritus:
    url: private/documents/emeritus
    depth: delete
    list: true

  emeritus-involuntary:
    url: private/documents
    depth: empty
    files:
      - emeritus-involuntary.yml

  emeritus-reinstated:
    url: private/documents/emeritus-reinstated
    depth: delete
    list: true

  emeritus-requests-received: # listing has dates for age checks
    url: private/documents/emeritus-requests-received
    depth: delete
    list: true
    dates: true

  emeritus-requests-rescinded:
    url: private/documents/emeritus-requests-rescinded
    depth: delete
    list: true

  foundation:
    url: private/foundation
    depth: empty
    files:
      - members.txt
      - potential-member-watch-list.txt

  foundation_board: # The checkout is needed by the WSS service and collate_minutes
    url: private/foundation/board

  foundation_mentors:
    url: private/foundation/mentors

  grants:
    url: private/documents/grants
    depth: skip

  iclas:
    url: private/documents/iclas
    depth: skip

  incubator-content:
    url: asf/incubator/public/trunk/content
    depth: empty
    files:
      - podlings.xml

  incubator-podlings:
    url: asf/incubator/public/trunk/content/podlings
    depth: files

  # for Secretary use only
  member_apps:
    url: private/documents/member_apps
    depth: skip

  minutes:
    url: asf/infrastructure/site/trunk/content/foundation/records/minutes

  officers:
    url: private/foundation/officers
    depth: empty
    files:
      - iclas.txt
      - reserved-ids.yml

  officers_historic:
    url: private/foundation/officers/historic
    depth: empty
    files:
      - committers.json

  officers_surveys:
    url: private/foundation/officers/surveys

  personnel-duties:
    url: private/foundation/officers/personnel-duties
    depth: files

# for access to badrcptto files:
  qmail_control:
    url: infra/infrastructure/trunk/qmail/control
    depth: empty
    files:
      - badrcptto
      - badrcptto_patterns

  # for Treasurer access to financial records
  records:
    url: asf/infrastructure/site/trunk/content/foundation/records
    depth: skip

  site-board: # calendar.md(text) only; N.B. this is fetched during web-site build
    url: asf/infrastructure/site/trunk/content/foundation/board
    depth: skip

  site-img:
    url: asf/comdev/project-logos/originals
    depth: delete
    list: true

  steve:
    url: asf/steve/trunk

  subreq: # for mail subscription requests
    url: infra/infrastructure/trunk/subreq
    depth: skip

  tlpreq-input:
    url: infra/infrastructure/trunk/tlpreq/input
