问题标签 [dvcs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 需要新项目的 git repo 布局建议
我正在开发一个计划保存在 git 存储库中的新项目。我知道如何在 CVS 中执行此操作,但我对 git 有点陌生,可以使用一些建议。
该项目是两个嵌入式设备的固件,它们相互通信并被打包成一对。对于这两种设备,都有代码的生产变体和制造变体。这两个设备项目都有许多子/兄弟项目,用于执行硬件的各个位(闪烁 LED 等)或与硬件相关的代码位(驱动程序等)。大多数代码在所有事物中都是通用的。
我还要求能够独立地修改生产和制造固件,以防止对一个固件的更改通过验证将另一个发回。
下面是我现有的目录布局。在我知道我会使用 git 之前,它就有机地成长了,而且大部分时间都被放下了。如果有更好的方法,我不反对重新组织整个事情。
- 项目根
- 包括
- 源代码
- 设备A
- 生产
- 制造业
- 眨
- 纽扣
- ...
- 设备B
- 生产
- 制造业
- 眨
- 纽扣
- ...
我很想将生产和制造放在分支上,但我通常在给定的一天同时工作,而 git 一次只允许一个分支处于活动状态。然后我不知道如何处理闪烁、按钮等,因为它们并不是真正的制造或生产。建议?
说明:
代码的制造版本在生产线上用于测试硬件。产品代码在硬件通过测试站后加载,然后交付给客户。两者至少有 75% 相似,但它们需要独立,这样我就可以修复生产代码中的错误,而无需停止生产线。
因为 DeviceA 和 DeviceB 是一对,所以两个代码集都被标记并同时发布,具有相同的发布版本号。
git - Git 与 Mercurial 存储库的互操作性
我在 Mac 上使用 GIT。说够了。我有工具,我有经验。我想继续使用它。这里没有战争...
问题总是与互操作性有关。大多数人使用SVN,这对我来说很棒。Git SVN 开箱即用,是一个简单的解决方案。人们可以继续愉快地使用 SVN,而且我的工作流程和工具都不会丢失。
现在......有些人和Mercurial一起来了。对他们来说很好:他们有他们的理由。但我找不到任何开箱即用的 GIT HG。我不想切换到 HG,但我仍然需要与他们的存储库互操作。
你们中的任何人都知道一个简单的解决方案吗?
mercurial - 我如何自己为多个用户托管 Mercurial 存储库?
有许多 git、Mercurial 等托管服务。我需要自己托管,因为我们要保留的一些数据具有敏感性质,我们不能将其移到异地。
我需要在服务器上托管一个 Mercurial 存储库,以便许多人可以访问它来拉取更改并推送他们自己的工作。需要某种密码保护,它也可以使用 ssh。不过,如果可能的话,我更喜欢 HTTP(S) 作为传输协议(类似于 Google 代码)。
有人可以指出我如何做到这一点的描述吗?到目前为止,我只找到了托管单用户存储库和托管服务的描述,但没有找到关于自己进行多用户托管的描述。
version-control - 命名分支与多个存储库
我们目前在相对较大的代码库上使用 subversion。每个版本都有自己的分支,并且针对主干执行修复并使用迁移到发布分支svnmerge.py
我相信是时候进行更好的源代码控制了,而且我已经玩弄 Mercurial 有一段时间了。
关于使用 Mercurial 管理这样的发布结构,似乎有两种观点。每个版本都有自己的存储库,并且针对发布分支进行修复并推送到主分支(以及任何其他较新的发布分支)。或者在单个存储库(或多个匹配的副本)中使用命名分支。
在任何一种情况下,我似乎都可能使用像移植这样的东西来挑选更改以包含在发布分支中。
我问你;每种方法的相对优点是什么?
git - 将更新推送到修剪后的 Mercurial 分支
我有两个相关的存储库,一个主存储库,其中包含许多不得泄露的敏感文件,以及一个“公共”版本,使用 hg convert 和 --filemap 创建以排除敏感文件和目录。
我希望对不影响敏感文件的主机进行进一步更新,使其可推送到从机,并更新从机以供主机拉取。现在这不会发生,因为它们被认为是“不相关”的存储库
如果这在 Git 上可行,但在 Mercurial 上不行,那么迁移是可能的,尽管这会很麻烦,因为某些开发发生在 Windows 机器上。从站尚未看到活跃的外部使用,因此可以在必要时对其进行核攻击并以另一种方式重新创建它。如果绝对有必要,甚至可以完全转储主服务器并从从服务器重新克隆,然后将所有敏感部分完全不版本化,但我非常希望不必这样做,因为其中一些文件正在发生变化,我想跟踪这些变化。
有没有人有什么好主意?
更新:我一直在查看 Git 上的文档——可以使用 Git 暂存区轻松实现“推送除这些文件之外的所有文件”命令吗?
更新 2:这对我没有帮助,但它可能对有类似问题的人有所帮助:您可以hg convert --filemap
重复使用,它只会跟踪对 master 的更新,但这仅适用于目标存储库是通过文件系统编写的,并且赢了不要在电线上工作。当然,它也无助于相反的方向。
mercurial - 如何在客户端级别抑制 Starteam 中的关键字扩展以启用到 DVCS 的本地镜像?
我正在尝试使用本地分布式版本控制系统 (Mercurial) 来镜像我的公司 Starteam CM 服务器。由于 Starteam 在结帐功能上的关键字扩展,我在看到许多变化时遇到了问题。例如,服务器设置为将 $History 扩展为每个签入评论和其他元数据的日志。当我尝试合并时,这些通常会导致烦人的冲突。
我可以手动“取消扩展”关键字,但代码库非常大,这将花费非常长的时间。
git - 将遗留代码库从 cvs 转移到分布式存储库(例如 git 或 mercurial)。初始存储库设计所需的建议
简介和背景
我们正在更改源代码控制系统,我们目前正在评估 git 和 mercurial。总代码库大约有 600 万行代码,所以不算大,也不算小。
让我首先简要介绍一下当前存储库设计的外观。
我们有一个用于完整代码库的基本文件夹,在该级别之下,有各种不同的上下文中使用的各种模块。例如,“dllproject1”和“dllproject2”可以被视为完全独立的项目。
我们正在开发的软件是我们称之为配置器的东西,它可以根据不同的客户需求进行无休止的定制。我们总共可能有 50 个不同的版本。然而,他们有一个共同点。它们都共享几个强制性模块(mandatory_module1 ..)。这些文件夹基本上包含内核/核心代码和公共语言资源等。然后,所有自定义都可以是其他模块(module1 ..)之间的任意组合。
由于我们目前使用的是 cvs,因此我们在 CVSROOT/modules 文件中添加了别名。它们可能看起来像:
因此,如果有人决定在 project_x 上工作,他/她可以快速检查以下所需的模块:
问题
直觉上,将基本文件夹作为单个存储库感觉是错误的。作为程序员,您应该能够检查您正在使用的当前项目所需的确切代码子集。您对此有何看法?
另一方面,将这些模块中的每一个放在单独的存储库中感觉更合适。但这使得程序员更难检查他们需要的模块。您应该能够通过单个命令来执行此操作。所以我的问题是:在 git/mercurial 中是否有类似的定义别名的方法?
任何其他问题,建议,指针都非常欢迎!
PS。我已经搜索过类似的问题,但并不觉得其中任何一个问题 100% 地适用于我的情况。
version-control - Mercurial中的“bzr uncommit”等价物?
Bazaar 有一个很棒的uncommit
命令,它可以简单地撤消最后一次提交。Mercurial中是否有任何等价物?
编辑:Bazaar 的 uncommit 命令不会修改文件——它会删除最后一次提交和相关数据(很有用,例如,当您发现提交消息中存在拼写错误或未添加本应添加的文件时为时已晚) .
例如:
.net - 您将如何使用 DVCS(在我的情况下为 Mercurial)为不同版本的 .NET 框架进行开发?
我正在为我们的 cms(在 asp.net webforms 上运行)编写某种新的管理仪表板。由于各种原因,我们的一些较旧的服务器只能处理 .NET 2.0,因此我必须为此重写使用 lambda 表达式等的代码。
我想知道您将如何使用像 mercurial 这样的 dvcs 同时开发这两个版本。
我当前的代码库和 mercurial 存储库针对 .NET 3.5。我对 mercurial 比较陌生,我想我必须分支代码库?
任何最佳实践或教程?
mercurial - 如何在 Mercurial 中克隆存储库的子文件夹?
我有一个 Mercurial 存储库,其中包含一些相关项目。我只想将这些项目中的一个分支到其他地方。
克隆是否可能只是存储库的一部分,这是实现这一目标的正确方法吗?