为什么一个SVN分支在提交后跳转了100个修订版本?

Why does a SVN branch jump with 100 revisions difference after commit?

我刚刚提交了与修订版 448 相关的本地更改。之后我注意到修订版 549,那么现在出了什么问题......任何想法(这不是什么大不了的事,但我可以'不要解释它让我徘徊......)?

虽然我确实记得创建了一个分支,但我猜这应该是问题所在,但它有点奇怪。

请记住,修订号在整个存储库中是全局的。 From the red book:

...revision N represents the state of the repository filesystem after the Nth commit

因此,某人甚至您自己对存储库中的其他地方(例如主干或其他分支)进行了 100 次提交。

如果你说的存储库是 TrackAssemblyTool, the fact that it's hosted at GitHub suggests it's using, well, git as main source control tool. Whatever, there's actually a Subversion repository at that URL which gets exposed if you use a Subversion client to fetch it. Apparently it's a GitHub feature:

GitHub supports Subversion clients via the HTTPS protocol. We use a Subversion bridge to communicate svn commands to GitHub.

这么说,你只需要查看日志:

C:\>svn log -r 448:549 https://github.com/dvdvideo1234/TrackAssemblyTool
------------------------------------------------------------------------
r448 | dvdvideo1234 | 2015-08-25 16:56:04 +0200 (ma., 25 ago. 2015) | 2 lines

test

------------------------------------------------------------------------
r449 | dvdvideo1234 | 2015-08-25 16:56:26 +0200 (ma., 25 ago. 2015) | 2 lines

sdf

------------------------------------------------------------------------
r450 | dvdvideo1234 | 2015-08-25 16:58:20 +0200 (ma., 25 ago. 2015) | 2 lines

go

------------------------------------------------------------------------
r451 | dvdvideo1234 | 2015-08-25 17:00:11 +0200 (ma., 25 ago. 2015) | 2 lines

go

[...]

r546 | deyan.dobromirov | 2015-08-31 22:01:33 +0200 (lu., 31 ago. 2015) | 1 line

Fixed loop bug Works 100%
------------------------------------------------------------------------
r547 | deyan.dobromirov | 2015-09-01 10:55:03 +0200 (ma., 01 sep. 2015) | 1 line

Localizing some functions, updating the Lua table sorting
------------------------------------------------------------------------
r548 | deyan.dobromirov | 2015-09-01 14:49:52 +0200 (ma., 01 sep. 2015) | 3 lines

Shortened the TOOL:LeftClick() better data flow
Changed Cvar abbreviation
Updated Undo custom messages
------------------------------------------------------------------------

您可以浏览等效的 git 提交 GitHub interface

如果您的日志缺少修订,您很可能没有指向存储库根目录,而是指向其他位置。

Deyan,Alvaro 几乎找到了问题的根源,但我会详细说明。我不知道 GitHub 的 SVN-bridge 的所有内部结构,但暴露的 SVN-side 你的回购似乎(对于纯 SVN 人)为 "cheated",因为

  • SVN 历史是线性的
  • 更大的revision-id一定意味着"later date of commit"
  • Revision-id是自增计数器

但是

  • svn log in range 482:483 似乎很奇怪
r484 | deyan.dobromirov | 2015-08-10 10:07:54 +0500 (Пн, 10 авг 2015)
------------------------------------------------------------------------
r483 | deyan.dobromirov | 2015-08-10 10:05:34 +0500 (Пн, 10 авг 2015)
------------------------------------------------------------------------
r482 | deyan.dobromirov | 2015-09-01 13:55:03 +0500 (Вт, 01 сен 2015)

(注意 483+ 修订日期 482 之前)

  • 快速 eye-search 我看到一些 "missing" 修订
r552 | deyan.dobromirov | 2015-09-01 18:36:55 +0500 (Вт, 01 сен 2015)
------------------------------------------------------------------------
r550 | deyan.dobromirov | 2015-09-01 17:49:52 +0500 (Вт, 01 сен 2015)
------------------------------------------------------------------------
r548 | deyan.dobromirov | 2015-09-01 17:49:52 +0500 (Вт, 01 сен 2015)

...

r186 | deyan.dobromirov | 2015-01-28 14:35:30 +0500 (Ср, 28 янв 2015)
------------------------------------------------------------------------
r184 | deyan.dobromirov | 2015-01-28 12:23:56 +0500 (Ср, 28 янв 2015)
------------------------------------------------------------------------
  • Github 在单个分支 master 中声明“284 次提交”,但 SVN 认为
>svn log -q -r HEAD
------------------------------------------------------------------------
r554 | deyan.dobromirov | 2015-09-01 19:08:39 +0500 (Вт, 01 сен 2015)
------------------------------------------------------------------------

关于精神错乱的权利: 554 是 284*2 没有 14 不知何故丢失的提交

附加说明:当我使用 Mercurial 克隆您的存储库时(Hg 可以克隆 Git 和 SVN 存储库),对于 Git-source 我得到了 284 次提交,正如预期的那样,对于 SVN-source我正在等待(在这个过程中,这是一个漫长的过程)与 SVN-client 和 SVN-URL: 554

相同的结果

中间初步诊断

SVN-interface 你的 repo 几乎没有损坏,你必须将此问题告知 GitHub tech-support 并寻求帮助

进一步探索

对于 "good" GitHub 存储库,从 Git 和 SVN URL 克隆必须提供相同的结果(相同的存储库),但是您的 SVN-repo 非常脏: 很多分支(Git 不知道)

lol                          543:f585d0a8ee89 (closed)
LuaDB                        541:816e1f7df77f (closed)
TimerOsClock                 344:a4bf94c50012 (closed)
Timer-os.clock()             343:27e5c55368d8 (closed)
VariableSpace                316:69a4aa153a0c (closed)
GhostAllProps                313:13352bdb9fb0 (closed)
CashePoolTest                183:a90989b79d70 (closed)

大量重复提交到这些幽灵般的分支(屏幕截图上的 1、2、3),non-linear 历史(完全不可能 SVN):见(仅part of) children for r401 (黑圈标记)

最终建议

不要盲目地将 Github 用于 SVN-projects 中有很多分支的 SVN-style,它的桥变得疯狂且不可预测。 Github 适用于线性 SVN-development,最后但同样重要的是,SVN-access 是 "tool of last resort" 用于幕后的真实 Git 存储库,尚未准备好任何很难use-cases