make:我自己的简单存储库


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吗?简单地说,我不知道删除文件时的行为方式。

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

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

任何提示将不胜感激。


您是否考虑通过电子邮件发送补丁?
丹尼尔贝克

不,我认为使用makefile更方便。
lord.didger 2011年

@ lord.didger:Daniel的意思是“你考虑过使用git-format-patch / git-send-mail”......以及与commit-hooks的结合。
akira

1
为什么不通过SSH使用Git存储库?
cYrus 2011年

1
git over email?那将是最好的选择。不幸的是,我对git有非常基本的了解。了解如何通过电子邮件发送git需要一些时间。@cYrus:Git over ssh?你是什​​么意思?
lord.didger 2011年

Answers:


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"`
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.