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

笑着哭i 提交于 2019-12-08 11:37:33

问题


I just made a commit with my local changes related to revision 448. After that I noticed revision 549, So what's wrong now .... Any Ideas ( Not that is a big of a deal, but I can't explain it and make me wander ...) ?

I did remember making a branch though, that should be the problem I guess but it's kinda strange.


回答1:


Deyan, Alvaro almost hit source of problem, but I'll show it in details. I don't know all internals of GitHub's SVN-bridge, but exposed SVN-side of your repo seems (for pure SVN man) as "cheated", because

  • SVN history is linear
  • Bigger revision-id must mean "later date of commit"
  • Revision-id is autoincrement counter

but

  • svn log in range 482:483 seems, well, strange
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)

(note dates of 483+ revision before 482)

  • with fast eye-search I see some "missing" revisions
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 states "284 commits" in single branch master, but SVN think
>svn log -q -r HEAD
------------------------------------------------------------------------
r554 | deyan.dobromirov | 2015-09-01 19:08:39 +0500 (Вт, 01 сен 2015)
------------------------------------------------------------------------

On the rights of delirium: 554 is 284*2 without 14 somehow lost commits

Additional notes: when I cloned your repo with Mercurial (Hg can clone both Git and SVN repos), for Git-source I got 284 commits, as expected, for SVN-source I'm awaiting (in the process, it's long procedure) the same result as it was for SVN-client with SVN-URL: 554


Intermediate preliminary diagnosis

SVN-interface to your repo is hardly broken, you have to inform GitHub tech-support about this issue and ask for help

Further explorations

For "good" GitHub repository, cloning from Git and SVN URLs must provide the same results (the same repos), but your SVN-repo is extremely dirty: a lot of branches (unknown to 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)

a lot of duplicated commit to these ghostly branches (1, 2, 3 on screenshot), non-linear history (totally impossible for SVN): see (only part of) children for r401 (marked with black circles)

Final recommendations

Don't use Github for SVN-projects with a lot of branching in SVN-style blindly, it's bridge become crazy and unpredictable. Github is good for linear SVN-development and, at last but not least, SVN-access is "tool of last resort" for real Git repositories behind the scene, not ready for any hard use-cases




回答2:


Keep in mind revision numbers are global across the entire repository. From the red book:

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

So, someone or even yourself has made 100 commits to somewhere else in the repository such as the trunk or another branch.




回答3:


If the repository you're talking about is 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.

Said that, you only need to check the logs:

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
------------------------------------------------------------------------

You can browse the equivalent git commits with GitHub interface.

If your log was missing revisions, you most likely weren't pointing to the repository root but some other location.



来源:https://stackoverflow.com/questions/32332269/why-does-a-svn-branch-jump-with-100-revisions-difference-after-commit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!