Инструменты пользователя

Инструменты сайта


courses:programming:upload_code

Создание патча для курсовой работы для прохождения автоматических проверок

Код для курсовой работы необходимо загружать в формате патча. Предъявляемые требования к патчу:

  • Весь код должен находится в папке src
  • Папка src должна быть второй по вложенности, например, dir/src или ./src

Пример патча:

diff -ruN -p0 /tmp/tmp.ovCONvikPQ/src/main.c cw/src/main.c
--- /tmp/tmp.ovCONvikPQ/src/main.c	1970-01-01 01:00:00.000000000 +0100
+++ cw/src/main.c	2025-04-04 08:37:24.956175891 +0100
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(){
+    printf("Course work for option 3.2, created by Ivan Ivanov.");
+    return 0;
+}

Как сделать патч через git

git может сделать патч на основе разности коммитов в ветке. Для этого необходимо сделать коммит на вашей ветке (для автоматической проверки отправлять коммит на github не обязательно) и выполнить следующую команду из репозитория:

git diff --no-prefix main Surname_Name_cw -- /path/to/Surname_Name_cw > src.patch

где Surname_Name_cw – имя вашей ветки в репозитории, /path/to/Surname_Name_cw – путь до вашей папки с курсовой работой в репозитории

Данная команда сделает патч с именем src.patch в текущей директории.

Примечание: вместо имён main и/или Surname_Name_cw можно использовать id коммита

Важно: Обязательно наличие флага –no-prefix, иначе проверка не примет ваш патч.

Как сделать через скрипт на bash (только для Linux)

Внимание, работает только на Linux!

Сохраните скрипт себе на компьютер:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Path is not provided. Usage '<path/to/script> <dir/to/patch>'"
    exit 1
fi

tmp_dir=$(mktemp -d)
diff -ruN $tmp_dir $1 -p0 > src.patch
rm -r $tmp_dir

Важно: Не забудьте выдать права на исполнение файлу при помощи команды chmod +x <path/to/script>

Затем откройте вашу папку, в которой находится src

Создайте патч: <path/to/script> ./src . Патч будет называться src.patch

Пример

Допустим есть следующая иерархия директорий

pr
├── cw
│   └── src
│   	└── main.c
└── make_patch.sh
  • Файл make_patch.sh – сохраненный скрипт для создания патча
  • Файл main.c – код с курсовой работой, которую необходимо загрузить в проверку

Вариант 1

Необходимо перейти в папку pr/cw и выполнить команду ../make_patch.sh ./src . Теперь должен появится патч src.patch

pr
├── cw
│   ├── src
│   │   └── main.c
│   └── src.patch
└── src.patch

Вариант 2

Необходимо перейти в папку pr и выполнить команду ./make_patch.sh cw . Теперь должен появится патч src.patch

pr
├── cw
│   └── src
│       └── main.c
├── make_patch.sh
└── src.patch