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

  letsencrypt:
    url: https://github.com/letsencrypt/letsencrypt
    depth: 1

  # 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:
      - .archives
      - deprecated_mailing_lists.yml
      - 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: # list only; no checkout
    url: private/documents/cclas
    depth: delete
    list: true

  comdev-foundation: # only want projects.json?
    url: asf/comdev/projects.apache.org/trunk/site/json/foundation

  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

  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
      - emeritus-request.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: delete
    list: true

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

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

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

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

  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

  site-board: # calendar.mdtext only
    url: asf/infrastructure/site/trunk/content/foundation/board
    depth: skip

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

  site-foundation: # members.mdtext only
    url: asf/infrastructure/site/trunk/content/foundation
    depth: skip

  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
