Eclipse同步工作区离线

时间:2016-01-11 15:08:19

标签: git version-control offline collaboration

我在我学校的Java开发人员团队中。保持每个人的工作空间与另一个工作区保持同步非常痛苦。

“好吧,你为什么不使用git”这里有一个问题:我们没有网络。本实验室中的所有计算机都处于脱机状态,教师对安全性非常紧张,他厌倦了孩子们破坏他的机器,因此他只是将他们全部脱机。说服他甚至为这个项目获得网络上的机器也没用。没有必要说他太紧张了。

到目前为止,我的小组通过记录我们所做的每一项更改,我们创建的每个课程等都“做了”。然后我们将所有工作区转移到一台PC,其中一些不幸的人必须手动进行更改。随着程序变得越来越复杂,变化越来越难以找到,我们的方法将变得非常无意义,甚至更加痛苦和乏味。

我确实有使用git的经验,eclipse有这个惊人的同步工作区工具,但我不知道如何使用USB包含工作空间。

另一个想法;一个简单的ad-hoc网络。假设我们组中有2台PC,只需将它们与以太网电缆连接在一起,一台可以充当服务器,并且可以从中访问它们。这似乎不实用,因为我没有管理员,没有足够的时间来破解PC并获得管理员访问权限。顺便说一下它的窗户7。

我希望这是您需要的所有信息,我很乐意回答有关可能被忽视的问题和信息的任何问题。

编辑:实验室中没有网络基础设施,我没有网络或网络基础设施。

4 个答案:

答案 0 :(得分:4)

将你的Git repo放在USB记忆棒上,让每个人都提交/合并/重组。只需配置新的"远程"将存储在那里并定期与棒同步。这应该工作正常。比构建ad-hoc网络更容易。

<强>更新

例如,假设您要在某些USB记忆棒上共享和同步该回购(来自Git repositories视图):

enter image description here

在棒上创建一个新的裸仓:

S:\> git --bare init myProject

将您的仓库添加为远程:

S:\myProject> git remote add myRepo M:\sources\learnyounode

从中获取所有数据,包括分支(因此*):( 更新我刚刚意识到您希望在第一次获取时使用不同的规范,而不是*:*使用{{ 1}}

'+refs/heads/*:refs/heads/*'

存储库已准备就绪。现在,在每台机器上,为每个存储库执行(在repo文件夹中):

S:\myProject> git fetch myRepo '+refs/heads/*:refs/heads/*'

在Eclipse中刷新M:\sources\learnyounode> git remote add mainRepo S:/myProject 视图以查看:

enter image description here

您也可以使用Eclipse而不是命令行Git来完成所有操作,但这将是截图重复描述。

答案 1 :(得分:1)

您可以使用Git,并使用“bundles”来传递团队成员之间的提交。它等同于您记录更改并手动合并它们的方法,但不那么繁琐且容易出错。

This article描述了如何创建和合并包。

答案 2 :(得分:0)

即使您的计算机不在网络上,您仍然可以使用Git进行代码合并。您的基本设置应该如下:

  1. 在其中一台计算机上初始化Git存储库。这将是你的远程&#34;,一个真正的真理来源,
  2. 制作&#34;初始提交&#34;使用其中一个工作区的代码
  3. 通过使用工作区代码覆盖git repo代码来逐步添加您的同事的更改。这样你就可以从&#34; git diff&#34;功能,使您可以轻松地进行代码合并。实际上,您可以疯狂地进行分支,合并以及在典型的分布式Git仓库方案中可以执行的任何其他操作。唯一的区别是,它将全部发生在一台计算机上,使用USB记忆棒复制其他人的代码。

答案 3 :(得分:-1)

如果您的计算机不在网络中 无法使用(非分布式)版本控制软件(例如CVS,Subversion)。

相反,如果您的计算机位于网络无法访问互联网,您可以在网络计算机中运行版本控制引擎软件并进行同步你的代码使用它。

有一台服务器用于版本控制系统(也是标准的,不仅是分布式的),另一种可能性是手动同步代码如下:

  • 为服务器中的每个用户创建一个工作目录
  • 将用户1的PC上的代码复制到服务器上的用户1的目录
  • 在用户1的服务器目录上进行同步
  • 为所有其他用户执行相同的操作

版本控制系统应该易于使用。如果您需要从USB卡复制数据以同步您的代码,那就不那么容易了。

因此,我建议将您的代码分成几部分并将每个部分分配给特定的人。使用定义良好的接口,这样所有接口都可以工作,而无需使用其他代码的最新版本。