Eclipse 离线同步工作区
Eclipse Synchronize Workspace Offline
我在学校的 Java 开发人员团队中。让每个人的工作空间与其他人保持同步是一件很痛苦的事情。
"Well, why don't you use git" 关键是:我们没有网络。这个实验室里的所有电脑都离线了,导师对安全非常严格,他厌倦了孩子们破坏他的机器,所以他就把他们都离线了。即使对于这个项目来说,说服他让机器联网也是没有用的。他太紧张是没有意义的。
到目前为止,我的团队已经 "made do" 通过记录我们所做的每一次更改、我们创建的每一次 class 等。然后我们将所有工作区转移到一台 PC 上,一些不幸的人必须手动制作变化。随着程序变得越来越复杂,变化越来越难以发现,我们的方法将变得极其无意义,甚至更加痛苦和乏味。
我确实有使用 git 的经验,并且 Eclipse 有这个惊人的同步工作区工具,但我不确定如何让它工作,比如 USB 上包含的工作区。
另一个想法;一个简单的 ad-hoc 网络。假设我们组中有 2 台 PC,只需用以太网电缆将它们连接在一起,其中一台可以充当服务器,一台可以从中访问内容。这似乎不切实际,因为我没有管理员权限,也没有足够的时间破解 PC 并获得管理员权限。顺便说一下,它是 windows 7。
好吧,我希望这就是您需要的所有信息,我很乐意回答有关可能被忽略的问题和信息的任何问题。
编辑:实验室没有网络基础设施,我没有网络也没有网络基础设施。
如果您的计算机不在网络中 无法使用(非分布式)版本控制软件(如 CVS、Subversion例如)。
相反,如果您的计算机在网络中未访问互联网,您可以运行版本控制引擎网络计算机中的软件并使用它同步您的代码。
有一个服务器用于版本控制系统(也是标准的,不仅是分布式的),另一种可能是手动同步代码如下:
- 为服务器中的每个用户创建一个工作目录
- 将代码从用户1的PC复制到服务器上用户1的目录中
- 同步到用户1的服务器目录
- 对所有其他用户执行相同的操作
版本控制系统应该易于使用。如果您需要从 USB 卡复制数据来同步您的代码,这就不是那么容易了。
所以我建议将您的代码分成几部分并将每一部分分配给特定的人。使用定义明确的接口,这样所有人都可以在没有其他代码的最新版本的情况下工作。
将您的 Git 存储库放在 U 盘上,让每个人 commit/merge/rebase 都进入其中。只需配置将存储在那里的新 "remote" 并定期与棒同步。那应该可以正常工作。比构建 ad-hoc 网络更容易。
更新
例如,假设您想在某个 U 盘上共享和同步该存储库(来自 Git repositories
视图):
在存储棒上创建一个新的裸仓库:
S:\> git --bare init myProject
将您的存储库添加为远程:
S:\myProject> git remote add myRepo M:\sources\learnyounode
从中获取所有数据,包括分支(因此*):(更新我刚刚意识到你会希望在第一次获取时有不同的规范,而不是*:*
使用 '+refs/heads/*:refs/heads/*'
S:\myProject> git fetch myRepo '+refs/heads/*:refs/heads/*'
存储库将准备就绪。现在在你的每台机器上,为你的每个存储库做(在你的 repo 文件夹中):
M:\sources\learnyounode> git remote add mainRepo S:/myProject
在 Eclipse 中刷新 Git repositories
视图可以看到:
您也可以全部使用 Eclipse 而不是命令行来做到这一点 Git,但这将是相当多的屏幕截图描述。
您可以使用 Git,并使用 "bundles" 在团队成员之间传递提交。这等同于您记录更改并手动合并它们的方法,但不那么乏味且 error-prone.
This article 描述了如何创建和合并包。
即使您的计算机不在网络上,您仍然可以使用Git 进行代码合并。您的基本设置应如下所示:
- 在其中一台计算机上初始化 Git 存储库。这将是您的 "remote",一个真正的真理来源,
- 使用您的一个工作区中的代码制作 "initial commit"
- 通过用他们的工作区代码覆盖 git 回购代码,逐渐添加您同事的更改。通过这种方式,您可以受益于 "git diff" 功能,该功能将使您可以轻松地进行代码合并。事实上,在典型的分布式 Git 回购场景中,您可以疯狂地进行分支、合并和其他任何您可以做的事情。唯一的区别是,这一切都将发生在一台计算机上,使用 U 盘从其他人那里复制代码。
我在学校的 Java 开发人员团队中。让每个人的工作空间与其他人保持同步是一件很痛苦的事情。
"Well, why don't you use git" 关键是:我们没有网络。这个实验室里的所有电脑都离线了,导师对安全非常严格,他厌倦了孩子们破坏他的机器,所以他就把他们都离线了。即使对于这个项目来说,说服他让机器联网也是没有用的。他太紧张是没有意义的。
到目前为止,我的团队已经 "made do" 通过记录我们所做的每一次更改、我们创建的每一次 class 等。然后我们将所有工作区转移到一台 PC 上,一些不幸的人必须手动制作变化。随着程序变得越来越复杂,变化越来越难以发现,我们的方法将变得极其无意义,甚至更加痛苦和乏味。
我确实有使用 git 的经验,并且 Eclipse 有这个惊人的同步工作区工具,但我不确定如何让它工作,比如 USB 上包含的工作区。
另一个想法;一个简单的 ad-hoc 网络。假设我们组中有 2 台 PC,只需用以太网电缆将它们连接在一起,其中一台可以充当服务器,一台可以从中访问内容。这似乎不切实际,因为我没有管理员权限,也没有足够的时间破解 PC 并获得管理员权限。顺便说一下,它是 windows 7。
好吧,我希望这就是您需要的所有信息,我很乐意回答有关可能被忽略的问题和信息的任何问题。
编辑:实验室没有网络基础设施,我没有网络也没有网络基础设施。
如果您的计算机不在网络中 无法使用(非分布式)版本控制软件(如 CVS、Subversion例如)。
相反,如果您的计算机在网络中未访问互联网,您可以运行版本控制引擎网络计算机中的软件并使用它同步您的代码。
有一个服务器用于版本控制系统(也是标准的,不仅是分布式的),另一种可能是手动同步代码如下:
- 为服务器中的每个用户创建一个工作目录
- 将代码从用户1的PC复制到服务器上用户1的目录中
- 同步到用户1的服务器目录
- 对所有其他用户执行相同的操作
版本控制系统应该易于使用。如果您需要从 USB 卡复制数据来同步您的代码,这就不是那么容易了。
所以我建议将您的代码分成几部分并将每一部分分配给特定的人。使用定义明确的接口,这样所有人都可以在没有其他代码的最新版本的情况下工作。
将您的 Git 存储库放在 U 盘上,让每个人 commit/merge/rebase 都进入其中。只需配置将存储在那里的新 "remote" 并定期与棒同步。那应该可以正常工作。比构建 ad-hoc 网络更容易。
更新
例如,假设您想在某个 U 盘上共享和同步该存储库(来自 Git repositories
视图):
在存储棒上创建一个新的裸仓库:
S:\> git --bare init myProject
将您的存储库添加为远程:
S:\myProject> git remote add myRepo M:\sources\learnyounode
从中获取所有数据,包括分支(因此*):(更新我刚刚意识到你会希望在第一次获取时有不同的规范,而不是*:*
使用 '+refs/heads/*:refs/heads/*'
S:\myProject> git fetch myRepo '+refs/heads/*:refs/heads/*'
存储库将准备就绪。现在在你的每台机器上,为你的每个存储库做(在你的 repo 文件夹中):
M:\sources\learnyounode> git remote add mainRepo S:/myProject
在 Eclipse 中刷新 Git repositories
视图可以看到:
您也可以全部使用 Eclipse 而不是命令行来做到这一点 Git,但这将是相当多的屏幕截图描述。
您可以使用 Git,并使用 "bundles" 在团队成员之间传递提交。这等同于您记录更改并手动合并它们的方法,但不那么乏味且 error-prone.
This article 描述了如何创建和合并包。
即使您的计算机不在网络上,您仍然可以使用Git 进行代码合并。您的基本设置应如下所示:
- 在其中一台计算机上初始化 Git 存储库。这将是您的 "remote",一个真正的真理来源,
- 使用您的一个工作区中的代码制作 "initial commit"
- 通过用他们的工作区代码覆盖 git 回购代码,逐渐添加您同事的更改。通过这种方式,您可以受益于 "git diff" 功能,该功能将使您可以轻松地进行代码合并。事实上,在典型的分布式 Git 回购场景中,您可以疯狂地进行分支、合并和其他任何您可以做的事情。唯一的区别是,这一切都将发生在一台计算机上,使用 U 盘从其他人那里复制代码。