Contact me: hankecnc@gmail.com

已修改计算机上的配置版本控制。 #1

推推 grbl 3年前 (2023-01-25) 375次浏览
新问题

已修改计算机上的配置版本控制。 #1

 关闭
爱德华威廉斯16 打开此问题 on Oct 18, 2019 ·4条评论

评论

已修改计算机上的配置版本控制。 #1

我的硬盘上堆满了马林版本和相应的配置文件。 现在我知道git足够危险了,我正在尝试版本控制这个。
具体地说,我有一个修改过的Rigidbot,要从马林示例中获得我的配置,可能需要十几个更改。
我应该分叉这个repo并添加my_Rigidbot分支吗? 我需要编写一个脚本来使用从这里提取的配置构建马林–对当前代码来说已经足够简单了,但是如果我想构建一个更旧的版本,我不确定如何将Marlin和配置都回退到过去的一个公共点。
或者,我可以在我的马林repo中创建一个my_Rigidbot分支,但我不清楚如何将上游更改拉入configuration. h。 这些更改是否完全反映在马林default configuration. h中,以便我可以尝试将该文件中的差异应用到我的自定义配置.h中? 或者,对该存储库机器中的文件所做的更改是否相关?

这是一个显而易见的问题,我相信其他人已经想出了很好的解决方案。

已修改计算机上的配置版本控制。 #1
成员
罗克西-3D 评论的 on Oct 18, 2019 · 

当然… 如果你对Git了解很多,Git会提供很好的解决方案。 我的Git技能很弱。

所以… 我只有一个大硬盘。 我用每台机器的名字保存了一个文件夹。 我把每个固件版本的完整副本放在适当的文件夹中,文件夹名称的标题格式为:日期-马林版本-标题。

然后… 我没有使用Git来做比较和移动代码块,而是使用ExamDiff Pro。
我个人… 这对我很有效。

当我需要找到一个特定的代码块或者合并东西的时候… ExamDiff Pro让我可以轻松地移动东西。 (AstroGrep对跨固件的许多版本搜索特定内容有很大帮助。)

已修改计算机上的配置版本控制。 #1
成员
思想家 评论的 on Jan 19, 2020 · 

这里的方法仍在开发中,但它不会影响您维护马林配置的方式。

我保持配置有序的方法是在我的马林分支中为每台机器保留一个单独的分支。两者唯一不同的是配置文件的内容。然后当我想将其中一个分支更新为最新的马林时,我只需合并来自upstream/2.0.x的更改,并将更新后的分支推到我的fork。这种方法仍然适用于移到这里的示例配置。(尽管我们还得为三角洲人提供更好的住宿条件。)

这个repo是为了让你更容易看到那些已经从默认值中改变的选项,并且有了清晰的差异,我们还将尝试其他的布局。

已修改计算机上的配置版本控制。 #1

为冗长的坏死肿块帖子感到难过,但还没有难过到不发布它:)

我还没有准备好做贡献,所以我克隆到我的本地机器(不是GitHub),并直接在VSCode的终端git中使用git进行分支(它或多或少地完成了我需要的一切,所以我不使用GitHub Desktop、tortoise等)。马林/Configurations的单独克隆,我根本不修改它。在两个克隆上我都设置了一个伪git remote set-url --push origin no_push,这样我就不会在VSCode中点击错误的按钮,然后意外地通过极小的“同步更改”图标进行推送:)

在VSCode中,我创建了一个马林“工作区”,添加了Marlin FW repo项目和Marlin Configurations repos目录,它允许我在repos中比较/cmp/合并示例配置和当前的Marlin配置。

在本地马林repo中,我为每台机器创建了一个分支(默认情况下,不会从原点或本地进行拉/推/跟踪,稍后会详细介绍)。我从来没有推/合并回原始的本地马林repo,我从origin/upstream(实际的Marlin GitHub repo)拉入它,然后git切换<my-branch>git pull。bugfix-2.0.x(或2.0.x等),cd到配置目录,切换到分支,pull(也是从上游马林Github)。 如果这两个分支中的任何一个在合并时出错(由于重定基,上游提交等),我不会去做真正的合并分类,我只是git fetch<分支>; git reset --hard origin/<branch>,这样它们就可以和master同步了(就像以前一样)。

然后我切换到Marlin repo中的我的个人机器分支,比较/合并my-configuration.h和my-configuration_adv.h(实际的文件名,我添加了注释,解释为什么我改变了一个设置; 唯一的名称,这样在我尝试本地分支跟踪时,它们不会从上游被破坏) 配置/默认/*. h 和配置/示例/<机器>/<任意变体>/*. h配置然后,当我准备好构建时,我将这些更改合并到实际的configuration. h,configuration_adv. h(没有所有注释,以保持行号与原始代码同步,以便在发布/与其他人讨论时使用)。我 git存储 任何更改(没有暂存是最简单的,尽管stash也有一个处理暂存更改的标志),如果我需要从源/上游提取,那么只需 git应用; git提交-m "<在此留言>"然后自动构建。

在配置文件中,我使用STRING_CONFIG_H_AUTHOR设置,其中包含用户名、机器/板名和编辑日期,有时还包含特性关键字,如“BLTouch”或“Dual-Z-Stepper”,因此我可以在/grep/bifrocate中搜索这些元素,并轻松找到基于日期的提交哈希,以及与马林Github repo上的发布日期相关(在某种程度上)。我玩了一些选项修改版本的东西在马林配置文件,但他们会得到重击,所以坚持与一些设计不会被重击。我以前工作过的大多数项目实际上使用了“release”/“dev”分支和/或分支名称中的实际“minor”版本号,这比“.x”或提交散列更容易浏览,我曾想过从自定义分支中创建一个新分支,如“bugfix-2.0.13”,奇数#为rc类型,偶数#为release/working(例如Linux内核),这样我就可以轻松地发现正在进行重建的提交,但我目前只是在提交消息中这样做,并且只是不断地使用同一个工作分支。

我 清理我的构建版本,并且不存档二进制文件。我只是签出我需要的提交并重新构建(是的,如果libs/VSCode/AutoBuild等发生变化,这可能会咬我一口);我只是升级,拉电流和重建,如果我有和从那里去。

尽管IntarWebs提出了各种建议,但我还没有让一个本地分支机构正确跟踪另一个本地分支机构。不过,我确实设法把我的git .config卷起来/污染到原始混乱的epsilon范围内。这只会让我受益于我的功能/自定义分支的状态信息从本地漂移到任何提交,我已经离开了本地同步,而不必切换分支,这正是我想要的行为。没什么大不了的,我只是切换到设置为origin/upstream的本地分支(这是马林Github repo),输入git status,然后切换回来,而不需要拉入/合并到分支中;只是为了检查我落后了多少提交而一直切换分支是一件痛苦的事情。

所以我想…

GIT WORKTREE,它实际上已经存在好几年了。这应该允许对同步、不可破坏/可合并分支和磁盘空间进行一些优化(当然要付出一些代价),但我还没有完全理解它的工作流好处/警告/危险的重要性。当然,自2011年左右以来,本地分支跟踪一直被吹捧为有效,虽然设置采取了,但没有一个选项实际上对我有效,他们总是去原点/上游,即使设置为本地文件://<repo-dir/branch>或报告无效的repo。是的,我玩过git分支/远程标志,绝对路径与相对路径,/branch与/branch/.git与/branch. git等,但还没有完成所有的排列。
我的“搜索过滤泡沫”使它很难找到任何信息,甚至在所有有关跟踪当地回购。搜索返回关于如何跟踪/添加/删除REMOTE分支(这很容易,也是为什么每个人和他们的室内植物都在博客上谈论它)。我真的只找到了两个职位,都在stackexchange我想。

如果我有胆量提交代码,使用marlin脚本,发布PR,我将不得不修改我的工作流程,比如实际推送到一个GitHub克隆的Marlin,但作为一个非贡献用户,我希望获得更多git工作流程的例子,特别是足够的细节,以帮助任何人快速加入并参与其中。任何关于从分支的本地分支跟踪本地分支的建议(不是跟踪本地分支的源/上游url,而是跟踪本地分支本身),或者关于工作流的信息,或者使用git worktree的好处,我们都将不胜感激。

我再次为篇幅道歉。

已修改计算机上的配置版本控制。 #1
成员

这个问题队列用于Marlin bug报告和开发相关问题,我们不希望在这里处理用户支持问题。(As注明日期 本页 .)要获得配置和故障排除帮助的最佳结果,请使用以下资源: