Алексей Махоткин

домашняя страница

RFC: Let’s Make Textual Conflicts More Personal

We’ve seen this pattern many times: you introduce version control to the team, and sooner or later someone encounters textual conflict. Less experienced users, such as HTML designers, copywriters, or even developers who are new to version control, tend to experience negative feelings, aimed towards Subversion and to you, by transitivity.

You carefully explain that all this time intelligent merging algorithm worked seamlessly, actually saving their time; that this is actual conflict between their changes and their colleague’s change. You track down that other person, and connect them both to work it out between them. They seem to agree, but I personally don’t have any illusion about what they think: that horrible “Subversion” beast patiently waited in its “repository”, and finally its time has come, and it mutilated their precious files with those horrible ”>>>>>>>” symbols, dealing irrevocable damage, destroying hours of work. And it is you who should have abolished the beast weeks ago, yet you seem to somehow collaborate with it. Something is wrong.

I think that the problem lies in anonymity of conflict markers. Subversion shows them like this:

— .svn/text-base/sandwich.txt.svn-base Tue Dec 11 21:33:57 2007 +++ .svn/tmp/tempfile.32.tmp Tue Dec 11 21:34:33 2007 @@ -1 +1,5 @@ -Just buy a sandwich. +<<<<<<< .mine +Go pick up a cheesesteak. +======= +Bring me a taco! +>>>>>>> .r32

Git shows them similarly. I propose that we add the necessary information about who did the change:

— .svn/text-base/sandwich.txt.svn-base Tue Dec 11 21:33:57 2007 +++ .svn/tmp/tempfile.32.tmp Tue Dec 11 21:34:33 2007 @@ -1 +1,5 @@ -Just buy a sandwich. +<<<<<<< .mine: DON'T PANIC. http://example.com/resolving.html +Go pick up a cheesesteak. +======= +Bring me a taco! +>>>>>>> .r32, added by mike at Tue Dec 07 11:00:00 2007

Of course, the information about who and when did the change is readily available from revision identifier, but the explanation could never hurt. It directs attention from the formless “Subversion”, or “Them”, to actual Mike, whom they could talk to. Second, the empty space could be used for some explanation, as set up by repository administrator.

If you like this idea – please, spread a word. Every version control system could be changed this way. And the change is almost purely cosmetic and I believe not very risky (though third-party tools could rely on conflict markers format too much).

What do you think?

Влад Головач “Дизайн пользовательского интерфейса 2. Искусство мыть слона”

Влад Головач опубликовал свою вторую книгу о разработке пользовательского интерфейса. Она прекрасна своей краткостью (97 стр.), красотой внешнего оформления и прагматичностью изложенного подхода.


Paul Duvall “Continuous Integration”

Continuous Integration was popularized by Martin Fowler and Kent Beck. It is so tightly integrated with version control system (“Maintain a Single Source Repository”, “Everyone Commits Every Day”, “Don’t Commit Broken Code” are basic practices of CI), that it clearly deserves mentioning here. Martin Fowler wrote an overview article: “Continuous Integration”.

“Continuous Integration: Improving Software Quality and Reducing Risk” is the book by Paul Duvall which was published in Martin Fowler signature series. You may find sample chapters online:

SCM Systems Comparison: A Better Frontend

We’ve reorganized the information from the famous Better SCM: Comparison project, and presented it in a more useful way.

Announcing: Version control systems comparison 2.0.

You may compare any number of systems against each other. See for example:

TODO: add (at least) Git, PlasticSCM and Microsoft TFS information to the original Better SCM database and re-import it here. Stay tuned for updates.

Как завести эккаунт на acm.org

Сайт Acm.org имеет невероятно кривую систему регистрации, которая нарушает половину мыслимых законов логичности и usability. Однако, ради контента имеет смысл один раз пройти через процесс заведения бесплатного ACM Web Account.

  • идём на страницу заведения эккаунта;
  • вводим работающий E-Mail Address;
  • вводим (латиницей!) Security Question и Answer, запоминаем хотя бы второе;
  • жмём “Continue”;
  • после паузы попадаем на ту же страницу, чуть-чуть отличающуюся. В правом нижнем углу экрана жмём кнопку “Non-Member Account”;
  • проверяем инбокс, кликаем по ссылке, присланной в письме;
  • вводим Answer на ваш же Security Question, аккуратно жмём на “Continue”;
  • теперь нам позволено ввести имя пользователя и пароль;
  • идём на http://portal.acm.org/, сверху нажимаем “Login”, логинимся.

Теперь можно ходить по ACM Digital Library и некоторая часть контента, например ACM Classic Books Series, становится доступна.