Содержание
Создание патча для курсовой работы для прохождения автоматических проверок
Код для курсовой работы необходимо загружать в формате патча. Предъявляемые требования к патчу:
- Весь код должен находится в папке 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
