Kev*_*n K 5 git version-control
我正在处理的软件项目最近从ClearCase迁移到Git.我仍在学习基础知识,所以一旦我更熟悉Git及其功能,这个问题可能会在以后解决.
我的问题是: Git是否为开发人员的机器提供了良好的工作流机制,无法连接到中央存储库(即没有网络连接)?
细节
我们的办公室(位置A)有一个集中的Git存储库/服务器.大多数开发人员都可以直接连接到服务器,无论是通过办公室的局域网还是通过VPN.此项目的安全策略不允许从LAN外部到服务器的任何直接ssh/https连接 - 在这种情况下,一切都必须通过VPN.
团队中的开发人员正在客户的工厂(位置C)进行现场工作.开发人员将在位置C处开发仅在离线状态下的开发机器,并且可以使用介质(CD或DVD)将数据传入和传出机器.开发人员需要在离线机器上有一两个代码,因为他将进行错误修复,为客户提供原型设计功能,并充当项目的前线代表.
开发人员还将在家中有一台机器(位置B),他可以使用VPN连接到位置A,并从中央仓库连接到推送/拉出.我们测试了这个,这很好用.
我们正在尝试确定是否可以使用DVD更新位置C的计算机上的存储库.目前的报告是大约1.6GB的源和3GB的第三方二进制文件(由于各个模块之间存在大量的互连,我们还没有打破它.这是一个拥有25年历史的传统研发代码库).在初始克隆之后,为了更新/拉取更改,我们是否需要将整个源刻录到磁盘,或者我们是否可以使用补丁/存档来提高其效率?如果可能的话,我想在位置C透明地维护计算机上的历史记录(我知道应用修补程序会对它进行提交,但我不相信它会为修补程序中的每个项目提取整个提交历史记录).
我们还需要朝着相反的方向前进(因此我希望保持历史).需要将错误修复/功能推送回中央存储库,导出数据的唯一方法是通过DVD.我们需要将整个存储库刻录到磁盘,还是只能通过差异来实现?在这种情况下,保持版本历史记录不太重要,但我希望尽可能保留它.
我们现在正在测试各种方法(Git只为我们活了大约3个工作日),所以我缺乏很多"我们尝试过的东西".我想看看是否有人这样做或做过类似的事情并收集工作流程,工具等的任何建议,以使这更容易.在理想的世界中,一旦我们在位置C设置了存储库,我希望通过CD/DVD向开发人员提供小的更新(只有自上次拉动后的更改集).
细节:Developer Machine将是Windows 7 x64,Central Repository是Atlassian Stash,团队通常使用SourceTree(但是开发人员正在学习Git的Bash命令以便真正理解它).我们对运行脚本持开放态度,
我确实看过这个问题,它暗示补丁文件是一种方法; 但是,要求是不同的.
您可以将.git文件夹压缩并将其传输到另一个位置(例如刻录在DVD上).这将允许您获取内部源.
您可以使用该git pull ../somewhere/unpackedgit命令创建基本上离线推送的内容,这是您需要更新更新所需的内容. git专业书详细解释了如何做到这一点,并有这样的介绍:
因此情况就是:你需要偷窃一个git push.也许您的网络已关闭,并且您希望将更改发送给您的同事.也许您在现场工作,出于安全原因无法访问本地网络.也许你的无线/以太网卡坏了.也许您暂时无法访问共享服务器,您希望通过电子邮件发送某些更新,并且您不希望通过format-patch传输40个提交.
输入git bundle.bundle命令会将通常使用git push命令通过线路推送的所有内容打包成一个二进制文件,您可以通过电子邮件或sneakernet将其解压缩到另一个存储库中.
"sneakernet"俚语是"通过步行(穿运动鞋)在电脑间移动文件"和"以太网"上的双关语.