文章 "迁移至 MQL5 Algo Forge(第 2 部分):使用多个存储库" - 页 2 123 新评论 Yuriy Bykov 2025.09.09 18:55 #11 Vladislav Boyko #:我建议你在改进过程中,仅使用 MetaEditor 和 Web 界面尝试执行一些原始分支策略的迭代。 创建分支 next,在那里进行几次提交 将 next 注入主分支,删除 next 用新的父提交再次创建 next,并提交了几次。 ... 如果不使用外部工具,第 3 项目前是不可能实现的。因此,尽管第 2 项可以通过网站完成,但这并不会让它变得更容易,因为它是一个死胡同。在这次讨论中,我并没有说什么新东西--几个月前我已经报告过这些。现在有一篇文章描述了第 1 和第 2 点,但不知何故,第 3 点恰好不在文章中(尽管第 3 点是逻辑上的延续)。 之所以没有第 3 点,是因为我更喜欢不同特征的分支有不同的名称,而不总是相同的名称(下一个)。按照你的方法,我不明白为什么要删除 next?它的含义似乎与主/开发捆绑包中的开发分支类似,在按顺序添加功能时用于开发每个新功能。 Yuriy Bykov 2025.09.09 19:04 #12 Vladislav Boyko #:经过几天的头脑风暴,我终于找到了一种方法,至少可以填满 "损坏 "的文件列表。 是的,我还曾一度尝试用脚本清除公共资源库中的所有编译文件,但事实证明,这样做很快就没有必要了。由于我不使用网络接口来处理文件差异,所以他们不在那里显示内容对我来说并不重要。因此,找出 "损坏 "文件的列表是可能的,但为什么呢?如果已经知道它们都是由 ME 创建的文件(UTF-16 LE 编码),那就是除了 README.md、.gitignore 和其他几个文件之外的所有版本库文件。 Yuriy Bykov 2025.09.09 19:09 #13 Yuriy Bykov #:雷纳特,你能告诉我将所有源代码转换为UTF-8是否合理,还是 ME 将继续只面向 UTF-16 LE?我想在新版本的分支或其他地方有提到过要过渡到UTF-8,但也许看起来是这样? 哦,我刚刚在 ME 中创建了一个新文件(New Class),所以它是立即以 UTF-8 格式创建的。 Vladislav Boyko 2025.09.09 21:50 #14 Yuriy Bykov #: 我不明白你为什么要删除下一个分支? 我总是在一个分支完全合并到一个稳定性更高的分支后立即删除它。这是一种习惯,而且我确信这是一种非常有用的习惯。 从纯粹的技术层面来说,重建一个分支往往会以父级提交(下一次提交的父级提交)的形式带来明显的不同。有时这并不重要,只会影响提交图的可用性,而有时不重建就不行。 编辑 总的来说,我觉得有必要从本地仓库删除分支的说法很奇怪。鉴于 Git 的分支模型是其杀手锏,而且 Git 鼓励频繁创建、删除和合并分支。 Vladislav Boyko 2025.09.09 22:31 #15 Yuriy Bykov #: 由于我不使用网络接口来处理文件差异,他们不在那里显示内容对我来说并不重要。 我也很少使用网页界面。我也不使用 MetaEditor 中的任何 Git 按钮。我用 Windows 版的 Git Bash 在终端上查看,这对我来说已经足够方便了。 Yuriy Bykov#: 所以你可以找到 "损坏 "文件的列表,但为什么呢? 了解损坏文件列表是为了修复它们。要修复它们,才能查看 diff。 diff 有什么用?[删除一个不重要的句子,它给自动翻译带来了麻烦]。 Vladislav Boyko 2025.09.09 22:45 #16 Yuriy Bykov #: 如果已经知道这些都是由 ME 创建的文件(采用 UTF-16 LE 编码) 几个月前我测试过这个问题。向导创建的是UTF-8(正常文件,而非损坏文件)。甚至 MT4 向导创建的文件也是正常的。在这些测试中,我从未从向导中获得过 "损坏 "文件。 我有时会在提交前用该脚本 检查文件。事实证明,这并不是白费力气--在某些情况下,正常文件会突然改变编码。也许是从剪贴板插入了什么东西之后,我也不确定。西里尔字母不太可能出现在文件中--我很久以前就放弃在注释中使用西里尔字母了。 Vladislav Boyko 2025.09.10 00:04 #17 Vladislav Boyko #: 西里尔字母几乎不存在--我甚至很久以前就放弃在评论中使用它了。 显然,我错了。我刚刚在 .mq5 文件中添加了UTF-8 编码: // 西里尔文 保存后,文件编码变为 "UTF-16 LE BOM"。 看来是 MetaEditor 的错。我添加了西里尔字符,然后用 Notepad++ 保存文件,编码仍然是 UTF-8。 Yuriy Bykov 2025.09.10 00:12 #18 Vladislav Boyko #:我还觉得奇怪的是,为什么要从本地仓库删除分支呢?鉴于 Git 的分支模型是它的杀手锏,而且 Git 鼓励频繁创建、删除和合并分支。 所以我也赞成在分支与主分支合并后删除它们。只是我第一次听说,在删除之后,他们会为新的剪辑创建一个同名的分支,而不是一个新的分支。 观察差异的目的是什么? 是的,这是非常必要的。我也在积极使用它,但仅限于 VS Code。奇怪的是,尽管我查看了编码 "糟糕 "的文件,但并没有出现崩溃现象。 我有时会在提交 前用 该脚本 检查文件。事实证明,这并不是无缘无故的--在某些情况下,正常的文件会突然改变编码。也许是从剪贴板插入了什么东西之后,我也不确定。 我从没遇到过这种情况。这也太出乎意料了。也许是因为同时使用不同的 ME 版本来处理相同的文件而导致正常文件损坏?我不知道... 我查看了提交历史,发现两个月前添加的文件确实已经使用了UTF-8编码,而三个月前添加的文件仍然是UTF-16 LE。很显然,在那段时间里,有一次改用了 UTF-8 编码。 Yuriy Bykov 2025.09.10 00:17 #19 Vladislav Boyko #:我想我错了。我刚刚在 .mq5 文件中添加了UTF-8 编码:并在保存后将文件编码更改为 "UTF-16 LE BOM"。看来是 MetaEditor 的错。我添加了西里尔字符,然后用 Notepad++ 保存文件,编码仍然是 UTF-8。 我确认,添加俄文字母并保存文件后,编码从 UTF-8 变为 UTF-16 LE。如果删除所有俄文字母并保存,编码仍为 UTF-16 LE。 Vladislav Boyko 2025.09.10 00:32 #20 Vladislav Boyko #: 这似乎是 MetaEditor 的错。 这里有一个证明,可以让 UTF-8、西里尔文和 Git 兼容: https://forge.mql5.io/junk/utf8-cyrillic-test/commit/e87d37b02e88d44305dea0f7f6630c6173471aea 只需要求 MetaEditor 不要更改文件编码即可。 Add some more cyrillic characters using Notepad++ · e87d37b02e junkforge.mql5.io utf8-cyrillic-test 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我建议你在改进过程中,仅使用 MetaEditor 和 Web 界面尝试执行一些原始分支策略的迭代。
如果不使用外部工具,第 3 项目前是不可能实现的。因此,尽管第 2 项可以通过网站完成,但这并不会让它变得更容易,因为它是一个死胡同。
在这次讨论中,我并没有说什么新东西--几个月前我已经报告过这些。现在有一篇文章描述了第 1 和第 2 点,但不知何故,第 3 点恰好不在文章中(尽管第 3 点是逻辑上的延续)。
之所以没有第 3 点,是因为我更喜欢不同特征的分支有不同的名称,而不总是相同的名称(下一个)。按照你的方法,我不明白为什么要删除 next?它的含义似乎与主/开发捆绑包中的开发分支类似,在按顺序添加功能时用于开发每个新功能。
经过几天的头脑风暴,我终于找到了一种方法,至少可以填满 "损坏 "的文件列表。
是的,我还曾一度尝试用脚本清除公共资源库中的所有编译文件,但事实证明,这样做很快就没有必要了。由于我不使用网络接口来处理文件差异,所以他们不在那里显示内容对我来说并不重要。因此,找出 "损坏 "文件的列表是可能的,但为什么呢?如果已经知道它们都是由 ME 创建的文件(UTF-16 LE 编码),那就是除了 README.md、.gitignore 和其他几个文件之外的所有版本库文件。
雷纳特,你能告诉我将所有源代码转换为UTF-8是否合理,还是 ME 将继续只面向 UTF-16 LE?我想在新版本的分支或其他地方有提到过要过渡到UTF-8,但也许看起来是这样?
哦,我刚刚在 ME 中创建了一个新文件(New Class),所以它是立即以 UTF-8 格式创建的。
我不明白你为什么要删除下一个分支?
我总是在一个分支完全合并到一个稳定性更高的分支后立即删除它。这是一种习惯,而且我确信这是一种非常有用的习惯。
从纯粹的技术层面来说,重建一个分支往往会以父级提交(下一次提交的父级提交)的形式带来明显的不同。有时这并不重要,只会影响提交图的可用性,而有时不重建就不行。
编辑
总的来说,我觉得有必要从本地仓库删除分支的说法很奇怪。鉴于 Git 的分支模型是其杀手锏,而且 Git 鼓励频繁创建、删除和合并分支。
由于我不使用网络接口来处理文件差异,他们不在那里显示内容对我来说并不重要。
我也很少使用网页界面。我也不使用 MetaEditor 中的任何 Git 按钮。我用 Windows 版的 Git Bash 在终端上查看,这对我来说已经足够方便了。
所以你可以找到 "损坏 "文件的列表,但为什么呢?
了解损坏文件列表是为了修复它们。要修复它们,才能查看 diff。
diff 有什么用?[删除一个不重要的句子,它给自动翻译带来了麻烦]。
如果已经知道这些都是由 ME 创建的文件(采用 UTF-16 LE 编码)
几个月前我测试过这个问题。向导创建的是UTF-8(正常文件,而非损坏文件)。甚至 MT4 向导创建的文件也是正常的。在这些测试中,我从未从向导中获得过 "损坏 "文件。
我有时会在提交前用该脚本 检查文件。事实证明,这并不是白费力气--在某些情况下,正常文件会突然改变编码。也许是从剪贴板插入了什么东西之后,我也不确定。西里尔字母不太可能出现在文件中--我很久以前就放弃在注释中使用西里尔字母了。
西里尔字母几乎不存在--我甚至很久以前就放弃在评论中使用它了。
显然,我错了。我刚刚在 .mq5 文件中添加了UTF-8 编码:
// 西里尔文保存后,文件编码变为 "UTF-16 LE BOM"。
看来是 MetaEditor 的错。我添加了西里尔字符,然后用 Notepad++ 保存文件,编码仍然是 UTF-8。
我还觉得奇怪的是,为什么要从本地仓库删除分支呢?鉴于 Git 的分支模型是它的杀手锏,而且 Git 鼓励频繁创建、删除和合并分支。
所以我也赞成在分支与主分支合并后删除它们。只是我第一次听说,在删除之后,他们会为新的剪辑创建一个同名的分支,而不是一个新的分支。
观察差异的目的是什么?
是的,这是非常必要的。我也在积极使用它,但仅限于 VS Code。奇怪的是,尽管我查看了编码 "糟糕 "的文件,但并没有出现崩溃现象。
我从没遇到过这种情况。这也太出乎意料了。也许是因为同时使用不同的 ME 版本来处理相同的文件而导致正常文件损坏?我不知道...
我查看了提交历史,发现两个月前添加的文件确实已经使用了UTF-8编码,而三个月前添加的文件仍然是UTF-16 LE。很显然,在那段时间里,有一次改用了 UTF-8 编码。
我想我错了。我刚刚在 .mq5 文件中添加了UTF-8 编码:
并在保存后将文件编码更改为 "UTF-16 LE BOM"。
看来是 MetaEditor 的错。我添加了西里尔字符,然后用 Notepad++ 保存文件,编码仍然是 UTF-8。
我确认,添加俄文字母并保存文件后,编码从 UTF-8 变为 UTF-16 LE。如果删除所有俄文字母并保存,编码仍为 UTF-16 LE。
这似乎是 MetaEditor 的错。
这里有一个证明,可以让 UTF-8、西里尔文和 Git 兼容:
https://forge.mql5.io/junk/utf8-cyrillic-test/commit/e87d37b02e88d44305dea0f7f6630c6173471aea
只需要求 MetaEditor 不要更改文件编码即可。