make:我自己的简单存储库

make:我自己的简单存储库

我在大学服务器上有一个帐户。我想与另一个学生分享一个程序代码。我想我应该把它放在我的 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 停止了程序,因为没有文件可以下载以查找更改。

此外,我无法决定是否在 diff 中使用 -N?简单地说,我不知道删除文件时它的表现如何。

还有一个问题:当出现问题时,.tmp 目录不会被删除。每次都应该删除该目录。下一步操作始终下载当前“存储库”状态。

我完全认识到它不是一个存储库,但我无法在远程主机上设置服务器程序,我认为 Makefile 可以帮我完成这项工作。

如有任何提示我将不胜感激。

答案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"`

相关内容