1

У меня есть учетная запись на сервере в моем университете. Я хочу поделиться кодом программы с другим студентом. Я думал, что должен положить это на свой аккаунт GitHub. К сожалению, я не могу, потому что код является частью конкурса.

Я решил сделать Makefile, чтобы мы могли легко загружать и скачивать файлы. Через некоторое время я наконец понял, что этого недостаточно. Затем я внедрил систему исправлений, чтобы сохранить только изменения. Не должно быть проблем с небольшими одновременными изменениями.

Makefile почти делает всю работу, но есть некоторые детали, которые я не могу решить. Makefile

all: download
PHONY: all, download, upload, getFiles

.ONESHELL:
getFiles:
    rm ../.tmp -r
    mkdir ../.tmp
    @(ssh $(user)@host "tar c *") | tar xv -C ../.tmp 

download: getFiles
    @diff -u ../.tmp . | patch -p1
    rm ../.tmp -r

upload: getFiles
    @diff -uN ../.tmp . | (ssh $(user)@host "patch -p1")
    rm ../.tmp -r

Я удалил все данные с хоста. Сейчас я хочу загрузить, но tar останавливает программу, потому что нет файлов для загрузки, чтобы узнать об изменениях.

Более того, я не могу принять решение по этому поводу: использовать ли -N в diff или нет? Просто я не знаю, как он себя ведет, когда удаляю файл.

Есть еще одна проблема: когда что-то идет не так, каталог .tmp не удаляется. Каталог должен быть удален каждый раз. Следующее действие всегда загружает текущий статус "хранилище".

Я полностью осознаю тот факт, что это не репозиторий, но я не могу настроить серверную программу на удаленном хосте, и я думаю, что Makefile сделает эту работу за меня.

Любые советы будут оценены.

1 ответ1

1

Мне наконец удалось исправить Makefile. Я думаю, что это работает отлично. Очевидно, это не профессиональный репозиторий, но он делает свою работу. Makefile:

-include name

all: download
PHONY: all, download, upload, getFiles

DIFFFLAGS = -uNr

.ONESHELL:
getFiles:
    rm .tmp -r
    mkdir .tmp
    (ssh $(user)@$(HOST) "tar c ") | tar xv -C .tmp

download: getFiles
        diff $(DIFFFLAGS) program .tmp/roboty | patch -p1 -d program

upload: getFiles
    diff $(DIFFFLAGS) .tmp/roboty program | (ssh $(user)@$(HOST) "umask 070 && patch -p1")

patch-extern:
    diff $(DIFFFLAGS) program program-workplace | patch -p1 -d program

patch-local:
    diff $(DIFFFLAGS) program program-workplace | patch -p1 -dR program-workplace

backup:
    tar cf backup.tar program-workplace

.ONESHELL:
clear:
    rm `find program-workplace/ -name "*~"`
    rm `find program-workplace/ -name "*.class"`

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .