Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

VCS время

Знакомство с системами контроля версий (с распределёнными) позволяет воспринимать время как такую своеобразную систему контроля версий. Каждую, допустим, секунду, происходит коммит накопившихся за секунду изменений. Ну или не секунду, а какой-нибудь там квант времени, не суть важно. Всё это происходит линейно (всякие замуты типа многомировой интепретации квантовой механики Эверетта я сейчас не рассматриваю), и изменения наслаиваются коммит за коммитом, как работа одного программиста, который планомерно работает в одной ветке над решением одной задачи.

Представьте себе, что какому-то человеку - назовём его путешественником во времени - становится доступна возможность перейти на какой-либо из коммитов в имеющейся истории, сделать, так сказать, чекаут ревизии из лога. И путешественник во времени пытается перейти из точки Б в точку А, расположенную ранее. Что происходит в этот момент? В этот момент путешественник во времени переходит в то состояние, в котором находился тогда. Он не сохраняет память о всём, что было с ним между точками А и Б, так как эта память - суть наслоённые изменения, которые путешественник во времени забрать с собой не в силах.

Так как мы считаем человека обладателем свободной воли (многие полагают, что все процессы в человеческом мозгу строго детерминированы, так что никакой свободной воли на самом деле не существует), то, получается, путешественник во времени, попав в прошлое, хоть и не сохранит никакой информации о том, что он сюда перешёл и что с ним было между моментом, в который он перешёл, и собственно переходом, сожет начать действовать по-другому, равно как и все остальные люди. Таким образом, начинается новая ветка, в которой копятся свои изменения.

Аналогичный эффект будет и в том случае, когда путешественник во времени обладает способностью переходть из ветки в ветку. Этот перехож также не имеет смысла, так как путешественник во времени потеряет всю память о ветке, из которой он пришёл, и приобретет память о ветке, в которую он пришёл.

То есть с такой точки зрения путешествия во времени не имеют смысла.

Но системы контроля версий обладают ещё и другими базывыми функциями. Я имею в виду слияние веток. Если рассматривать каждый коммит как дельту - набор изменений, произошедших с прошлого коммита, то с такими штуками можно проворачивать другие фокусы (см. git cherry-pick, git stash и так далее). Значит, могут возникать конфликты. Как с такими конфликтами обходится время, я не знаю :) Надо подумать, как оно с ними может обходиться.

Оригинал записи http://blog.axshavan.ru/2013/12/vcs-time.html
Subscribe

  • Как у меня дела (четверг)

    Постепенно жизнь возвращается в прежнее, ещё до-хоум-офисное, русло. А надо-то было всего ничего, неделю походить на работу в офис. Но, разумеется,…

  • Два дня в офисе

    Ах да, забыл написать пост :) Совсем заработался. Так вот, результат PCR-теста пришёл отрицательный примерно через 25 часов после того, как я его…

  • И снова про работу

    Два дня — четверг и пятницу — сходил в офис поработать. Всё, мой многомесячный хоум-офис закончился, теперь снова работаю по-старинке, с личным…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments