Hacker News new | past | comments | ask | show | jobs | submit login
The new X-Men movie explained in Git (hashrocket.com)
169 points by hpvic03 on June 5, 2014 | hide | past | favorite | 40 comments



Except you've thrown away everything that's happened since 1973, some of which you may still want. There's going to be a lot of awful lot of manual conflict resolution to handle - or is there a "world" script that can be run off the new HEAD that plays out the series of events that result from the sentinels being prevented?


I think the idea is that you don't have access to the other timeline, because none of the characters should. All that's left of the dark timeline is in Wolverines's head, which is accounted for!


(SPOILER ALERT)

To me, the beauty of the story is that, while we as viewers do not know what has transpired in the universe between 1973 and present, neither does Wolverine. Further, since he stills ends up at the School with his friends alive in the present day, we know that a lot of character development has necessarily happened, because we saw analogous stories in the earlier movies from the now lost timeline. So while the events of the previous movies are now no longer canonical history, they are as real to Logan as they were to us, and their emotional impact still affected Logan's life in a very real way. Meanwhile, going forward the script writers are no longer slaves to continuity, which, after the third film blew up everything, greatly restricted what they could do with the main cast of characters in the present day setting.

In my opinion, so many "time reset" plots (think Star Trek Voyager's Year of Hell) leave the viewer empty because they truly have no lasting consequence on the character's we love. SF Debris (http://blip.tv/sf-debris-opinionated-reviews/voy-year-of-hel...) made the incredible suggestion that, in that Star Trek story, imagine what if, due to some kind of quantum chronometric mumbo jumbo, one of the crew members (say, Harry Kim!) had survived the big reset with their memories and experiences of the year intact. But instead, apart from some shallow insights into the characters in a "what if" scenario, it was as though it never happened.


So Wolverine at the end of the film wouldn't remember anything that happened to him (and his body) between 1973 and the present in the new timeline which he created, right? He would just remember his original timeline, plus the stuff that we see him do in the film.

You see that in the film, where he meets some characters he previously knew but didn't expect to see. But we don't see the other side of this: there are surely characters in the new timeline that Wolverine is very close to that he will have no memory of. I guess that sucks for those characters.


>I guess that sucks for those characters.

Wolverine's return to the new future essentially kills off the one that had been living in that timeline since 1973 and nobody cares.


But, there's a nice narrative symmetry because he had missing memories when he was first introduced way back in X-Men.


Right, but I'm talking about characters in the new timeline that met Wolverine after 1973.


> I think the idea is that you don't have access to the other timeline, because none of the characters should. All that's left of the dark timeline is in Wolverines's head, which is accounted for!

The Professor was in Wolverine's head back in the day and might have learned a few things that needed to to be done.


I suppose that's true. Maybe the desired commits could be cherry picked onto the branch before you make the branch into master.


The problem is that the software architects didn't separate concerns very well in architecting the World system. So subtle bug fixes could have unexpected consequences if they were just cherry-picked in!


The world is made of unexpected consequences.


Also:

    apocalypse@eygpt$ git init

    touch README.md; git add README.md

    git commit -m 'Build Pyramids'


LOL...

  git remote add horseman1 git@github.horseman1/apocalypse.git
  git remote add horseman2 git@github.horseman2/apocalypse.git
  git remote add horseman3 git@github.horseman3/apocalypse.git
  git remote add horseman4 git@github.horseman4/apocalypse.git


Easy to explain cronology of new X-Men movie. I want to see you do the same with Primer!


Haha now that would be a challenge


Though in large part it's a challenge because we only see hints at some of the timelines, so we'd have to make guesses and leave some placeholder branches in...


I think you should mention that 1973 wolverine enlists young punk Quicksilver (1000x developer) who force pushes a ton of undocumented, yet amazing, features with little to no commit messages, then sadly disappears.


Wrong title, "Git explained in the new X-Men movie" ;-)


This had the exact opposite effect on me of further explaining some Git features via the X-Men movie!


Ellen Page actually played Gitty Pryde.


I was expecting the picture of a shiny directed acyclic graph, what a let down


Alternatively: Git/version control explained in terms of time travel.


That is also accurate.


Nice intro to (advanced) git :-) If anyone else was curious about the state of bisect in mercurial (it's been in standard mercurial for a while):

http://mercurial.selenic.com/wiki/BisectExtension

As for git stash, the closest equivalent appear[1] to be the shelve extension (distributed with mercurial since 2.8, November 2013):

http://mercurial.selenic.com/wiki/ShelveExtension

However, as we'll be needing to do a bit of history editing, we might want to just go straight for the (also bundled with mercurial) queues extension:

http://mercurial.selenic.com/wiki/MqExtension

Also relevant:

http://mercurial.selenic.com/wiki/EditingHistory http://mercurial.selenic.com/wiki/MqTutorial

I'm a little tempted to redo this for mercurial, just to look at the differences -- but the first order would be to create an actual repo -- say just a file with timestamps and events:

    -479: Artaÿctes crucified
    (...)
    1973: Wolverine wakes up in random bed
    1973: Mystique kills Trask
    1973: Mystique's DNA stolen
    xx: Last mutant killed by sentinel
(With every commit appending one or more lines).

That way we could use it as a nice way to compare work flows across scms... Who's up for doing RCS?

Come to think of it, as the initial series of commits are linear, they could be specified in some linear fashion (yml maybe) -- and then replayed to create the initial "broken" state -- then one would only have to document the "fixing" part for different systems... Another alternative would be to convert (eg via mercurials git/svn plugins -- but I don't think they cover bzr, monotone and rcs...).

[1] http://selenic.com/pipermail/mercurial/2011-December/041164....


Also: the movie starts with a branch where nearly everyone dies, and Kitty Pride/Bishop reverts a few commits.


That's funny. My friend just told me this too -- I got to the theater about 5 minutes late.


Why did Wolverine regain his memory in the future?


(In case it's not a given, spoilers for Days of Future Past below.)

He didn't. He just has all his memories from the original timeline (e.g. previous X-Men and Wolverine films), plus the events he experienced during Days of Future Past. He has no memory of what happened to him between 1973 and the present in the new timeline (which he created). That's why he's surprised to see a few characters at the end of DoFP. He remembers them from the original timeline, but he also remembers them dying in the original timeline. What would be much stranger is if they had never met him in the new timelines (in which case he would remember them but they wouldn't know him), or if he had met someone in the new timeline but not the original timeline (in which case they would know him but he would have no memory of them).


It's probably to match with the way the comic book ends where kitty retains the memories


Well, first and foremost I assume, to make for a better story.

However, wolverine's consciousness was "sent back" into his alternate timeline body. At least, that's the idea.


What, we didn't get to use git annotate? I guess we don't want to go assigning blame in such a complicated situation :-)


I understand that this is just for fun, but wouldn't the rebase at the end require a force push to the remote?


You forgot the post-credit scene showing Apocalypse 5000 years ago in Egypt with his 4 horsemen! :-)


So what about "Lost"?


Whatever happened, happened. There's no rebasing involved. There's just a lot of jumping around to various tags at different points in time.


Thats the problem with Lost. They don't know how to use git.


wibbly wobbly timey commit.


Do you mean timey wimey? <shudder>


Where did Torvalds get that screwdriver?!?


Someone should name a tool timey wimey.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: