Skip to content

Commit 3d63f05

Browse files
committed
Document .dodonaignore in the repository directory structure
dodona-edu/dodona#8986 lets a repository declare paths that are not synced to Dodona, through a .dodonaignore file in its root. Adds the file to the structure list, the example tree and a section covering the pattern syntax and the judge guard. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H2YSb8SivZtRfFZrsgLD5S
1 parent 9adf294 commit 3d63f05

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

  • en/references/repository-directory-structure
  • nl/references/repository-directory-structure

en/references/repository-directory-structure/index.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,30 @@ A repository directory contains a collection of exercises. We expect this reposi
1313
You can add pictures or other resources that can then be referred to in the description of the course or a series. The URL to these files can be found on the repository page on Dodona. These are public elements, so these files should not be confidential.
1414
- **A `media` directory**: this directory contains media files that can be used in all exercise descriptions in that repository only. Dodona will automatically fallback to this folder if a media item is referred to but not found in the `media` directory of the exercise it was used in.
1515
- **Optionally multiple `exercise` directories**: these directories contain the information for the individual exercises. For more information regarding their structure, please see the [exercise directory structure page](/en/references/exercise-directory-structure).
16+
- **Optionally a `.dodonaignore` file**: this file lists the paths that Dodona should not copy from your repository. See [excluding files with `.dodonaignore`](#excluding-files-with-dodonaignore) below.
1617

1718
Dodona ignores other files and directories. You can thus freely create additional files (for example, containing the solutions to your exercises) or create a personal exercise hierarchy. The only thing that isn't allowed is placing exercise directories inside other exercise directories.
1819

20+
## Excluding files with `.dodonaignore`
21+
22+
Everything in your repository is copied to Dodona when you push. Add a `.dodonaignore` file to the root of your repository to keep some paths out. It works like a `.gitignore`, except that the files stay in your git repository and are only kept away from Dodona. That is useful for material the platform has no use for, such as sample solutions, large test data or generated files.
23+
24+
Each line is one path pattern:
25+
26+
```
27+
solutions/
28+
*.pyc
29+
/scratch/
30+
```
31+
32+
A pattern without a leading slash matches anywhere in the repository, a pattern that starts with a slash only matches at the root of the repository, and a trailing slash restricts the pattern to directories. The `.dodonaignore` file itself is never copied either.
33+
34+
The file is read on every synchronisation, so adding or editing it takes effect on your next push: paths that were copied before are then removed from Dodona as well. Remove a pattern again and the files reappear on the push after that.
35+
36+
::: warning Keep the files that Dodona needs
37+
A pattern that is too broad, such as an unanchored `tests` or a stray `*`, also excludes files that Dodona needs to judge submissions. For judge repositories this is checked: a `.dodonaignore` that would exclude `config.json` or `run` makes the synchronisation fail and the last working version stays in place. The administrator of the repository receives an email whenever a synchronisation fails.
38+
:::
39+
1940
## Example of a valid repository structure
2041

2142
::: tip Examples
@@ -24,6 +45,7 @@ Take a look at the [example exercises repository](https://github.com/dodona-edu/
2445

2546
```
2647
+-- README.md # Describes the repository
48+
+-- .dodonaignore # Optional: paths that are not copied to Dodona
2749
+-- public # Contains files that belong to the course or series
2850
| +-- CodersApprentice.png # An example image to reuse throughout the course
2951
+-- media # Contains files that can be used in any exercise description

nl/references/repository-directory-structure/index.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,30 @@ Een repository bevat alle mappen en bestanden waaruit een cursus bestaat. We ver
1313
Hier kan je afbeeldingen of andere zaken toevoegen waar je naar kan refereren vanuit een cursusbeschrijving of een reeksbeschrijving. De URL van deze bestanden vind je op de pagina van de repository op Dodona. Dit zijn publieke bestanden, dus ze mogen geen confidentiële informatie bevatten.
1414
- **Een map `media`**: deze map bevat media-bestanden die gebruikt kunnen worden in alle oefeningenbeschrijvingen binnen deze repository. Dodona zal automatisch terugvallen op deze map indien er in een beschrijving gerefereerd wordt naar een media-item dat niet gevonden wordt in de `media`-map van die specifieke oefening.
1515
- **Optioneel meerdere `oefening`mappen**: deze mappen bevatten de informatie voor de individuele oefeningen. Voor meer informatie betreffende hun structuur, gelieve de pagina met de [oefeningenmap-structuur](/nl/references/exercise-directory-structure).
16+
- **Optioneel een `.dodonaignore` bestand**: dit bestand somt de paden op die Dodona niet mag kopiëren uit je repository. Zie [bestanden uitsluiten met `.dodonaignore`](#bestanden-uitsluiten-met-dodonaignore) hieronder.
1617

1718
Dodona negeert andere bestanden en mappen. Je kan dus zorgeloos andere bestanden toevoegen (bijvoorbeeld bestanden met de oplossing voor je oefeningen) of een eigen oefeningenhiërarchie maken. Het enige dat niet is toegelaten is oefeningenmappen binnen elkaar plaatsen.
1819

20+
## Bestanden uitsluiten met `.dodonaignore`
21+
22+
Alles in je repository wordt naar Dodona gekopieerd wanneer je pusht. Voeg een `.dodonaignore` bestand toe aan de hoofdmap van je repository om bepaalde paden buiten te houden. Het werkt zoals een `.gitignore`, alleen blijven de bestanden gewoon in je git-repository staan en worden ze enkel weggehouden van Dodona. Dat is handig voor materiaal waar het platform niets aan heeft, zoals voorbeeldoplossingen, grote testbestanden of gegenereerde bestanden.
23+
24+
Elke lijn is één padpatroon:
25+
26+
```
27+
oplossingen/
28+
*.pyc
29+
/scratch/
30+
```
31+
32+
Een patroon zonder schuine streep vooraan komt overal in de repository overeen, een patroon dat met een schuine streep begint enkel in de hoofdmap van de repository, en een schuine streep achteraan beperkt het patroon tot mappen. Het `.dodonaignore` bestand zelf wordt ook nooit gekopieerd.
33+
34+
Het bestand wordt bij elke synchronisatie gelezen, dus een `.dodonaignore` toevoegen of aanpassen heeft effect bij je volgende push: paden die eerder wel gekopieerd werden, worden dan ook uit Dodona verwijderd. Verwijder je een patroon weer, dan komen die bestanden terug bij de push daarna.
35+
36+
::: warning Behoud de bestanden die Dodona nodig heeft
37+
Een patroon dat te breed is, zoals een niet-verankerde `tests` of een verdwaalde `*`, sluit ook bestanden uit die Dodona nodig heeft om oplossingen te verbeteren. Voor judge-repositories wordt dit gecontroleerd: een `.dodonaignore` die `config.json` of `run` zou uitsluiten laat de synchronisatie mislukken, en de laatst werkende versie blijft staan. De beheerder van de repository krijgt een e-mail wanneer een synchronisatie mislukt.
38+
:::
39+
1940
## Voorbeeld van een geldige repository-structuur
2041

2142
::: tip Voorbeelden
@@ -24,6 +45,7 @@ Neem een kijkje in de [voorbeeldoefeningenrepository](https://github.com/dodona-
2445

2546
```
2647
+-- README.md # Beschrijft de repository
48+
+-- .dodonaignore # Optioneel: paden die niet naar Dodona gekopieerd worden
2749
+-- public # Bevat bestanden die behoren tot het vak of reeksen
2850
| +-- CodersApprentice.png # Een voorbeeldafbeelding die hergebruikt kan worden doorheen het vak
2951
+-- media # Bevat bestanden die gebruikt kunnen worden bij elke oefening

0 commit comments

Comments
 (0)