Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Глоссарий перевода на Русский язык #36

Open
DJm00n opened this issue Nov 20, 2014 · 81 comments
Open

Глоссарий перевода на Русский язык #36

DJm00n opened this issue Nov 20, 2014 · 81 comments

Comments

@DJm00n
Copy link

DJm00n commented Nov 20, 2014

Предлагаю всё же обсудить и принять общие переводы терминов.
На данный момент есть:

  1. Глоссарий перевода первого издания книги ProGit и тут.
  2. Глоссарий проекта перевода Git - которому тоже нужна помощь переводчиков.
  3. Глоссарий проекта перевода интерфейса SourceTree for Windows.

За основу предлагаю взять 2й вариант и в случае изменения перевода термина — изменять и там тоже т.к. этот перевод войдет в официальный Git как будет готов.

Возражения/пожелания/идеи?

@sadfuzzy
Copy link
Member

Хорошая идея, спасибо. @madhead @lyobzik

@madhead
Copy link
Contributor

madhead commented Nov 21, 2014

В целом варианты ок, но есть небольшие имхо-комментарии

  • directory - переводить по возможности как директория (каталог - это catalog, папка - это folder). Наверняка, большинство читателей поймут "директорию". К тому же, это общепринятый вариант в *nix.
  • blob - блоб, но с указанием оригинала на английском в скобках (в тексте оно встречается раз пять, иногда рядом несколько раз, так что будет понятно)
  • cherry-pick - никак не "отбор лучшего". Я за что-нибудь типа "выборочное применение коммита". Ещё, это не "частичное применение", так как коммит применяется полностью (слово "частичное" может запутать).
  • feature - можно переводить и как "фича"
  • stash - "кармашек" ))
  • submodule, subrepository - Дочерний модуль / репозиторий, вложенный модуль / репозиторий, субмодуль, субрепозиторий. Приставка под-, имхо, как-то не звучит.
  • tag - тэг, метка
  • fast forward - объяснить этот термин (типа: указатель просто "переносится" наверх) при первом упоминании, дальше использовать "быстрая перемотка" или "быстрое слияние"
  • fetch - забирать / получать свежие / последние изменения
  • hook - триггер

@DJm00n
Copy link
Author

DJm00n commented Nov 21, 2014

Не люблю кальки, если без них можно обойтись и уже есть устоявшийся русский термин. Поискал по переводам man-pages:

directory

directory->директория = 0
directory->каталог = куча
Microsoft тоже так считает
Тут вы не правы.

blob

В тексте Git встречася много раз. В выборе "блоб" vs "двоичный объект "- я за второй вариант. Опять же переводчики из Microsoft

cherry-pick

Да, "отбор лучшего" не самый лучший вариант. "выборочное применение коммита" - хороший вариант, хоть и длинновато. Microsoft используют "выборочный отбор" - мне нравится такой вариант.

feature

А как переводить feature branch тогда? "фичеветка"? Намного лучше "тематическая ветка", ИМХО. Еще есть вариант "возможность", но он тоже какой-то неоднозначный...

stash

"кармашек" ну и правда смешно, так и представляю как суровые бородатые программисты на Си изменения "в кармашек прячут", чтобы не потерялись. А еще есть "shelve" в Mercurial - по логике выходит тогда "полочка"? :) Я предлагаю остановиться на безликом "отложенные изменения".

submodule, subrepository

Дочерний модуль / репозиторий, вложенный модуль / репозиторий - многабукав, тем более есть возможность заменить меньшебукав. суб- - калька с английского, можно и без неё обойтись в этом случае без потери смысла, ИМХО. В MS используют "подмодуль". :)

tag

Метка - она и есть метка. Вроде такой перевод и есть в глоссарии. В MSVS так вообще - "тег". Дело вкуса.

fast forward

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

fetch

Этот термин всегда в связке с fetch\pull\push (извлечь\получить\отправить изменения из репозитория). Немного обсуждали тут и тут - устоявшегося перевода нет. :( Нужно минимум букв - чтобы влезало в интерфейс (не думайте только о переводе книги). Пока предлагаю остановиться на том, что есть.

hook

Тут еще используют перевод "обработчик". Microsoft тоже его предлагает

Предлагаю со мной спорить. :)

@madhead
Copy link
Contributor

madhead commented Nov 21, 2014

Не сочтите за оскорбление, но у вас есть своё мнение, или вы во всём полагаетесь на Microsoft?

@DJm00n
Copy link
Author

DJm00n commented Nov 21, 2014

@madhead конечно, есть своё мнение. Но в Microsoft работают хорошие локализаторы - у них есть чему поучиться, глупо было бы не использовать их опыт. Тем более, это даст более однообразную терминологию.
PS: Нет, не работаю у них. :)

@madhead
Copy link
Contributor

madhead commented Nov 21, 2014

@DJm00n может и хорошие, но у нас есть шанс сделать лучше

@madhead
Copy link
Contributor

madhead commented Nov 21, 2014

Тут вы не правы.

Спорно. Директория - нормальный академический перевод, ничуть не хуже каталога.

В тексте Git встречася много раз. В выборе "блоб" vs "двоичный объект "- я за второй вариант. Опять же переводчики из Microsoft...

Вот поиск по оригиналу. В тексте встречается 8 раз, иногда рядом, и ещё несколько раз в коде (не переводим). И, кстати, что насчёт "многабукав" по поводу варианта переводчиков™ из Microsoft™?

Microsoft используют "выборочный отбор"

"Отбор" - это когда я лучших коров плодится оставляю, а худших - на колбасу. И лучше бы Microsoft™ использовал этот самый отбор, набирая персонал.

А как переводить feature branch тогда? "фичеветка"? Намного лучше "тематическая ветка"

Так и переводить - "тематическая ветка". Ну или "ветка для фичи", если не против многобуквенности. Это не вносит путаницы. А в случаях, когда слово "feature" используется самостоятельно, вполне допустимый перевод - "фича", ведь все привыкли.

отложенные изменения

Отличный вариант. Но он описывает не сам stash, а содержимое stash'а. Уверен, можно выкрутится будет в каждом отдельном случае. Кармашек - это на случай если вдруг захочется взбодрить читателя..

многабукав, тем более есть возможность заменить меньшебукав. суб- - калька с английского, можно и без неё обойтись в этом случае без потери смысла, ИМХО.

В этом есть смысл. Но имхо лучше "многобукав", чем некрасивое слово. Это книга. Её должно быть приятно читать.

Этот термин всегда в связке с fetch\pull\push (извлечь\получить\отправить изменения из репозитория). Немного обсуждали тут и тут - устоявшегося перевода нет.

Согласен, единого варианта нет. В каждом случае можно подобрать слово, подходящее по контексту.

Тут еще используют перевод "обработчик".

Обработчик - это больше handler.

( Нужно минимум букв - чтобы влезало в интерфейс (не думайте только о переводе книги). Пока предлагаю остановиться на том, что есть.

Общая претензия к "многабукав": это перевод книги, и тут нет проблем с тем, что текст не влезет в UI. Если на UI возникают какие-то проблемы - это проблемы локализации UI и решать их нужно там. Не стоит ограничивать перевод книги длиной кнопок в стороннем продукте. И уж тем более не проблема если в книге будут использоваться длинные составные термины, сокращённые в софте до единичных слов.

@DJm00n
Copy link
Author

DJm00n commented Nov 21, 2014

@madhead,

Директория

ИМХО устаревший термин. Сейчас используют либо каталог (в случае directory) либо папка (folder). Могу также сослаться на Грамота.ру или Яндекс.словари :) Тут не принципиально - можно и так и так. Все поймут о чем речь.

"Отбор" - это когда я лучших коров плодится оставляю, а худших - на колбасу.

Вроде как раз в этом и смысл cherry-pick - отбор лучшего коммита ветки.
В словаре есть и такое -
отбор лакомых кусков_, захват ягодных мест_

"тематическая ветка"

полностью согласен, но "ветка для фичи" кривовато выглядит ИМХО.

на случай если вдруг захочется взбодрить читателя..

ничего не имею против.

Обработчик - это больше handler.
угу. hook - ближе к "перехватчик".

Не стоит ограничивать перевод книги длиной кнопок в стороннем продукте.

просто нужно попытаться сделать так, чтобы когда речь идет о терминах - перевод был однозначный и одинаковый в книге и в интерфейсе Git. конечно описать термин в книге можно как угодно и без ограничений на длину.

@DJm00n
Copy link
Author

DJm00n commented Nov 21, 2014

По поводу fetch\pull\push.
Нашел варианты в Lingvo (словарь LingvoComputer (En-Ru)):

  • fetch
    выборка (напр., команды или данных из памяти) || выбирать (напр., команду или данные из памяти)
  • pull
    выталкивать (запись из стека)
  • push
    проталкивать (запись в стек)

Как вам?
Текущий перевод fetch\pull\push - извлечь\получить\отправить изменения из репозитория.

@sadfuzzy
Copy link
Member

@DJm00n, текущий определённо лучше.

@madhead
Copy link
Contributor

madhead commented Nov 21, 2014

По поводу cherry-pick, понял ваш консёрн. Перевод дословный, с учётом устоявшихся выражений, это хорошо. Но лично у меня при прочтении такого перевода возникает ощущение, что плохой коммит я черрипикнуть не могу. Возможно, это что-то из области психологии и восприятия фразеологизмов. Но при черрипикинге все коммиты равны )). Как-то так.

полностью согласен, но "ветка для фичи" кривовато выглядит ИМХО.

Безусловно. Согласны, что перевод слова "feature" как "фича" не обязывает переводить сочетание "feature branch" как "фичеветка"?

hook

Если выбирать между "перехватчик" и "обработчик", то лучше уж перехватчик: типа "перехватчик отправки данных на сервер". Это ближе к реальности, потому что он не обрабатывает отправку, а лишь вызывается в процессе при отправке как побочный эффект.

Текущий перевод fetch\pull\push - извлечь\получить\отправить изменения из репозитория.

Из такого перевода не видно разницы между fetch и pull. Лучше, в зависимости от контекста, уточнить, происходит лишь получение изменений, либо они ещё и сливаются с локальной репой. Разницу между fetch и pull очень сложно передать в одно слово. А на UI мне нравится как сделали в Git for Windows - "sync". Сразу понятно, что синхронизируется состояние реп (что примерно делает pull). Поэтому я бы выбрал (для интерфейса программы): fetch - "забрать изменения" / "получить изменения" / "узнать об изменениях" (корявенько, но ближе всего), а для pull - "синхронизировать репозиторий" (не дословно, но уже понятней, что эта операция чего-то поменяет локально).

@askras
Copy link
Contributor

askras commented Nov 25, 2014

Надо определиться как писать слова вы, ваш, вас. С заглавной или строчной буквы. А то уже есть расхождения.

@DJm00n
Copy link
Author

DJm00n commented Nov 25, 2014

@askras, в литературе и интернете (кроме личной почты) пишут «вы» с маленькой буквы.
Статьи по теме:
http://www.artlebedev.ru/kovodstvo/sections/165/
http://www.gramota.ru/spravka/letters/?rub=rubric_88
Пруф 1
Пруф 2

@askras
Copy link
Contributor

askras commented Nov 26, 2014

ок

@sadfuzzy
Copy link
Member

sadfuzzy commented Dec 5, 2014

@DJm00n 👍

@DJm00n
Copy link
Author

DJm00n commented Dec 9, 2014

Встретился мне в переводе интерфейса (возможно, есть и в книге) термин trailer - обозначают так заголовки Signed-off-by и т.д. в конце сообщения коммита. В общем похожи эти заголовки на заголовки в email, но идут в конце сообщения.
Никак не могу придумать адекватного перевода этому термину.
Варианты:

  • хвостовик\хвост
  • концевик
  • трейлер
  • завершитель
  • завершающий заголовок

Ваши варианты?

@askras
Copy link
Contributor

askras commented Dec 9, 2014

В файле 01-introduction/sections/basics.asc

.... Git имеет три основных состояния, в которых могут находиться ваши файлы: committed, modified и staged. Committed означает, ......

Может быть переводить как в первой версии

.... В Git'е файлы могут находиться в одном из трёх состояний: зафиксированном, изменённом и подготовленном. "Зафиксированный" значит.....

или так

... В Git'е файлы могут находиться в одном из трёх состояний: зафиксированном (committed), изменённом (modified) и подготовленном (staged). "Зафиксированный" значит...

@DJm00n
Copy link
Author

DJm00n commented Dec 10, 2014

@askras, ИМХО 3й вариант предпочтительный.

@askras
Copy link
Contributor

askras commented Dec 10, 2014

Вот и мне он больше нравится

@sadfuzzy
Copy link
Member

commit – фиксация

@madhead
Copy link
Contributor

madhead commented Dec 15, 2014

@sadfuzzy, теперь везде менять коммит на фиксацию? "коммит" (как существительное) в разы привычней слуху. Я не против "to commit" -> "[за]фиксировать".

@DJm00n
Copy link
Author

DJm00n commented Dec 15, 2014

Я в переводе интерфейса использую и тот, и тот перевод. Иначе как-то не читабельно выходит "фиксация" как существительное.
"1 коммит" vs "1 фиксация" - коммит выигрывает.
Но пишу "зафиксировать изменения".

@madhead
Copy link
Contributor

madhead commented Dec 15, 2014

@DJm00n, +1

@sadfuzzy
Copy link
Member

Просто книгу хотят взять в печать и просили не простой транслитерацией переводить

@DJm00n
Copy link
Author

DJm00n commented Dec 15, 2014

Поискал по всем своим "источникам", и оказалось, что везде используют слово "фиксация":
Перевод в Microsoft Visual Studio
Яндекс словари
Лингво словари
Перевод TortoiseGit
Потому верным выходит именно такой перевод термина.
PS: У меня получается "профдеформация" и слово "коммит" для меня выглядит родным. Ничего, буду отучаться.

@madhead
Copy link
Contributor

madhead commented Dec 15, 2014

@DJm00n та же ерунда :( Хотел бы я увидеть разработчика, который говорит "фиксация"

@sadfuzzy
Copy link
Member

Крутые ссылки, спасибо. Ну сленг на то и сленг, чтобы быть нелитературно удобным :)

@madhead
Copy link
Contributor

madhead commented Dec 15, 2014

Не, ребят, это реально печалька

@DJm00n
Copy link
Author

DJm00n commented Dec 15, 2014

@Menelion
Copy link
Contributor

@Dobrosvet, в английском языке многие глаголы звучат и пишутся так же, как и существительные. Так работает язык. Пример из русского: «Добро побеждает зло». Как это ни странно, «зло» здесь может быть не только существительным в винительном падеже, но и наречием (добро побеждает как? зло).
Понятно, что на профессиональном жаргоне все говорят «коммит» (a commit) и «коммитить» (to commit). Но если для «коммитить» есть синонимы (сколь я знаю, «(за)фиксировать» уже устоялось — так говорит мой очень олдскульный коллега, который начинал ещё чуть ли не в семидесятых), то для существительного «коммит» нормального русского слова не придумано. Жаль, но факт.

@Dobrosvet
Copy link

@Menelion, хорошо а нам что нужно? Нам нужно понимание английского для изучения Git? Изначально да, так как источник на английском, а после перевода? Английский уже не нужен. И нужно понимание вещей (зачем мы делаем "git commit" и что из него получается). В чём проблема писать то же слово "зафиксировать" или "закрепить", а не "делать коммит", и писать "снимок" вместо "коммит"? Они понятны без переводчика и дополнительных источников.

@Menelion
Copy link
Contributor

@Dobrosvet, мы не можем писать «снимок» вместо «коммит», потому что снимок — это snapshot. В техническом переводе (да и любом специализированном) есть принцип единства соответствия терминологии. Мы не можем называть две вещи одним русским словом, иначе получится чудовищная путаница. Я долго носом рыл этот вопрос, иногда к нему до сих пор возвращаюсь, но пока мой вердикт прежний: для слова «commit» как существительного адекватного перевода на русский нет. Это не единственное такое слово: например, в некоторых языках есть понятие an iterable. На русский это переводят как «итерируемый объект» — длинно и некрасиво, но ничего лучшего нет. Так и тут с коммитом. Может быть, кто-то ещё выскажется.

@vlsi
Copy link

vlsi commented Jan 29, 2018

писать "снимок" вместо "коммит"? Они понятны без переводчика и дополнительных источников.

Вообще говоря, слово "снимок" не отражает тот факт, что у commit'а есть parent commit. Снимок может отражать смысл "состояние файлов на момент X", но коммит это больше, чем просто состояние файлов.

Вам то может программистам прижилось ваш "коммит", только о новичках вы не подумали

А чего поделать? Вариант "слушай, Вась, у ты во вчерашней фиксации не перепутал названия переменных?" звучит уж очень странно. Ни от кого не слышал такого.
"Вась, ты во вчерашнем снимке точно ту функцию вызвал?" -- тоже странно.

Более того, слово "фиксировать" (to commit) созвучно с общеупотребимым "фиксить" (to fix), что может вводить в заблуждение при обсуждении "фиксации" и "фикса".

зачем мы делаем "git commit" и что из него получается

О, точно. Почему же мы делаем git commit, а не мерзавец закрепить --сообщение "..."?

@DJm00n
Copy link
Author

DJm00n commented Jan 29, 2018

@Dobrosvet, да, «закрепить» нормальный вариант…был бы^ если бы уже не существовало устоявшегося термина. Нормальный, не лучше других. Сообщество выбрало устоявшийся вариант (хоть и жаргонизм, но всем понятный). Демократия, все дела.

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

@Menelion, так уже путаница... Я понял вас, значит в английской версии идёт только сравнение коммита со снимком и англоговорящие не говорят snapshot, а только commit?

@vlsi, а что мешает подписать сзади снимок сделав ссылку на предыдущий скажем по дате, описанию или по идентификатору написанному на задней стороне?

А чего поделать? Вариант "слушай, Вась, у ты во вчерашней фиксации

По этому я не за фиксацию.
"Слушай, Вась ты во вчерашнем снимке не перепутал названия переменных" (смысл, а не перевод)

"Вась, ты во вчерашнем снимке точно ту функцию вызвал?" -- тоже странно.
"Вась, ты во вчерашнем коммите точно ту функцию вызвал?"

Сравните два варианта. Человеку который вообще только пришел в программирование, какой вариант будет легче объяснить? Он спросит что такое коммит(у него нет НИКАКИХ ассоциаций), а вы ему скажете что это похоже на снимок кода, (ассоциации: это похоже на фотографию, только кода, момент который не изменить, ...), более того окружающие люди скорее всего поймут что вы говорите не о фотографии а о коде, но почему то говорите про снимки, и у человека всплывут те же ассоциации он хоть что-то поймёт, не знакомый с программированием.

И ничего не странно, отлично звучит. А "коммит" значит изначально для вас не странно?

Более того, слово "фиксировать" (to commit) созвучно с общеупотребимым "фиксить" (to fix), что может вводить в заблуждение при обсуждении "фиксации" и "фикса".

Ну это простите, бред, если бы изначально было "a fix" - исправление, и "to fix" - исправлять. Тогда бы не пришлось их сравнивать. Не говорите фиксить в таком случае, и исправляйте всех от кого это услышите. Уж извините если я и тут не прав я умываю руки, я не понимаю тогда ни людей, ни почему старшее поколение оставило нам столько сложностей, ни как их преодолевать, разбираясь в этой каше.

О, точно. Почему же мы делаем git commit, а не мерзавец закрепить --сообщение "..."?

Я вас понял, но вы не прочитали мой предыдущий комментарий.

есть команда "git commit" и она что то делает.
А делает она... коммит

Вот это странно.

@DJm00n, сообщество проголосовало за варианты одного человека. Я не вижу там вариант "закрепить" и других которые предлагали в комментариях, их дополнительно не посчитали (типичная Демократия). Хотя я не сомневаюсь что результат бы изменился. Основной аргумент за "коммит" это, "привык, по этому понятнее, оставьте так", хорошо а что делать тем кто "не привык и не понятно", правильно!, выражусь цитатой @Menelion

Я долго носом рыл этот вопрос, иногда к нему до сих пор возвращаюсь

Нам остаётся рыть носом ошибки предшественников, а не решать руками свои задачи.

"Коммит" и "коммитить" неприемлемые слова и их однозначно нужно заменять. Но я не вижу ни оного голоса поддержки, по этому похоже это останется только моим мнением...

@madhead
Copy link
Contributor

madhead commented Jan 29, 2018

Человеку который вообще только пришел в программирование

Посоветовать потратить часик на расширение словарного запаса. Потом пригодится. Почему всё должно быть удобно вам лично? Вся индустрия использует слова "коммит", "фиксить", и ещё пару сотен, если не тысяч, подобных.

старшее поколение оставило нам столько сложностей

Сложности будут у вас когда вы со своим словарём решите пообщаться с кем-нибудь, скажем, на конференции. Кстати, как вы относитесь к латинскому слову "конференция"? Не лучше ли нам говорить "сборище"? А то как-то ну... знаете... если человек ни разу не был на конференции, не совсем понятно что имеется в виду...

@vlsi
Copy link

vlsi commented Jan 29, 2018

но почему то говорите про снимки, и у человека всплывут те же ассоциации он хоть что-то поймёт, не знакомый с программированием.

Да в том-то и дело, что человек, далёкий от программирования, простите, не коммитит.
Есть определённый пласт инженеров, которым тяжело объяснить "зачем им нужно пользоваться системами типа git/svn". Для них гораздо проще создать файл "схема_2018-01-28.docx", а потом "схема_2018-01-29.docx", и уж точно ни за что не объяснить зачем нужны эти "системы хранения версий".
Более того, они и git-то будут использовать максимум в режиме "только на запись". Дали им инструкцию, что нужно "сначала нажимать add, потом commit, потом push", вот они так и будут делать. Даже историю изменений смотреть никто не будет.

Зачастую, работа таких инженеров сопряжена с нетекстовыми средами. Например: Word, Excel, Apache JMeter, Owen Logic. В этом случае, git diff/merge не даёт никаких плюсов. Там бинарные форматы хранения.

Вот и получается, что "далёкие ассоциации" нужны только тем, кто этим самым иснтрументом пользоваться не будет. Да, возможно, есть ненулевое количество тех, кто "не понимает что такое коммит", но при этом "получит реальную пользу от использования git".

А тем, кто разбирается в программировании, проблем понять "кто такой коммит" и чем он отличается "от слепка состояния дерева файлов" никаких нет.

Не хочу никого обижать, но "корявые" переводы "общепринятых" слов крайне и крайне мешают в работе рядового программиста. Вот выше было обсуждение перевода "cherry-pick vs отбор лучшего". Это же дичь какая-то. Я когда увидел "отбор лучшего", то вообще пользоваться не смог. Так и с коммитом. Я не вижу смысла делать "далёкую ассоциацию" для привлечения 10 новых пользователей, и при этом обращения 100500 программистов в шок.

Делать 2 варианта перевода (git-русский-с-заимствованными и git-русский-вообще-без-заимствованных-слов), наверное, было бы совсем странно.

ассоциации: это похоже на фотографию, только кода, момент который не изменить

Тут ваша ассоциация не различает разницу между "состоянием дерева файлов" и "коммитом".
Например: можно получить одинаковое состояние файлов, но прийти к этому состоянию совершенно разными путями. В итоге коммиты будут разными (у них будут различаться parent'ы, предыдущая история и т.п.) Ассоциация про "просто снимок" неправильная, и отглагольный вариант образования слова "коммит" мне тут нравится гораздо больше. Иными словами, для меня важной частью смысла является то, что "коммит, это нечто добавленное в репозиторий в результате фиксации изменений"

И ничего не странно, отлично звучит. А "коммит" значит изначально для вас не странно?

Для меня "коммит" в смысле существительного звучит гораздо лучше чем "снимок" (который ассоциируется с разнообразными snapshot'ами файловых систем гораздо больше чем с фотоснимками). Более того, "коммит" как существительное для меня звучит гораздо менее жаргонно, чем "фиксить баги". Вот "коммитить" звучит более жаргонно, и я предпочитаю варианты "зафиксировать изменения" / "вчерашний коммит".

Не говорите фиксить в таком случае, и исправляйте всех от кого это услышите

Простите, но от выражения "баги фиксить" мы вряд ли уйдём, даже если будем стараться искоренить подобное. Я не о том, что нужно стараться "фиксить баги", а о том, что этот жаргон слишком широко распространился.

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

Коммит, существительное которое вы имеете в виду, тоже самое что и snapshot в английской версии учебника по смыслу, это одна сущность?

@vlsi
Copy link

vlsi commented Jan 29, 2018

Коммит, существительное которое вы имеет в виду, тоже самое что и snapshot в английской версии учебника по смыслу, это одна сущность?

Нет, это разные сущности и эти слова имеют разную смысловую окраску. Коммит (сущ) это commit (сущ). Английская версия различает слова snapshot и commit.
Например, встречается фраза snapshot of the commit

Или же фраза Git is fundamentally a linked list of commit objects that point to a snapshot of content

@Menelion
Copy link
Contributor

@Dobrosvet, об этом мы вам и пытаемся сказать с Владимиром: commit и snapshot — совершенно разные вещи, поэтому перевод «снимок» для коммита ну никак не подходит. Я полностью поддерживаю Владимира: «зафиксировать изменения», но «вчерашний коммит». Это асимметрия заимствований в языке и это нормально. Мы заимствовали computer, но не заимствовали to compute, например.

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

@madhead, вы не поняли, не лично мне.

  1. Значит хранилище(repository) это набор снимков(snapshots).

  2. Каждый снимок это состояние всех файлов в момент времени.

  3. (коммит - нельзя называть снимком по этой причине, по тому что это не состояние файлов в момент времени)

  4. Делая коммит мы делаем снимок, сделать снимок можно только сделав коммит.

  5. Делать коммиты с помощью снимков нельзя, а снимки с помощью коммитов можно.

  6. Делая коммит получаем - новый снимок и коммит

  7. Снимок это список коммитов (которые образуют состояние).

  8. А коммит это НЕ набор разниц в изменённых файлах.

  9. Это сохранённый набор файлов целиком, которые были изменены

  10. (со всем содержимым в том числе которое не изменилось)

  11. (без ссылок на не изменённые файлы так как их хранит снимок)

Что так, что не так?

@vlsi
Copy link

vlsi commented Jan 29, 2018

Что так, что не так?

Так скажите, каким словом вы собираетесь заменить слово коммит, тогда и поговорим.
Попробуйте изложить "аксиомы git" без использования слова коммит.

Например, так:
a) Репозиторий состоит из коммитов, веток, тегов, снимков состояния файлов
б) "снимок состояния файлов" просто отражает состояние файлов (и их названия), но без учёта того, как к этому состоянию пришли
в) коммит ссылается на "снимок состояния файлов" и коммиты выстроены в дерево
г) дерево коммитов отражает историю развития проекта
д) ветка указывает на какой-то коммит и тем самым она отражает ...

Вот чем вы предлагаете заменить слово коммит?

1 . Значит хранилище(repository) это набор снимков(snapshots).

Это вы так перевели фразу "Git is fundamentally a linked list of commit objects that point to a snapshot of content"?
По-моему, более корректный перевод это "Git представляет из себя связный список коммитов, которые указывают на snapshot'ы" (не хочу вдаваться в тонкости перевода слова "snapshot")

2 . Каждый снимок это состояние всех файлов в момент времени.
7 . Снимок это список коммитов (которые образуют состояние).

Т.е. у вас два разных определения для понятия "снимок". В одном (2) это просто содержимое файлов, а в другом (7), это содержимое файлов + то, как к этому состоянию пришли.

6 . Делая коммит получаем - новый снимок и коммит

Отчего же? Как вы назовёте результат выполнения git commit --allow-empty --message "test" ? Тут создаётся новый коммит. Новый снимок -- едва ли. Но я могу ошибаться в том, что вы подразумеваете под словом "снимок".

Пункты 8-11 вообще относятся к деталям реализации, и они не могут (не должны) использоваться для описания базовых понятий. Git может хранить как файл целиком, так и разницу от предыдущей версии в зависимости от того, какая форма более компактна. Для конечного пользователя это скрыто. Поэтому обсуждать "хранит ли snapshot файлы целиком или в виде diff'ов" смысла нет.

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

Пункты 2 и 7 считайте одним предложением это одно определение а не 2 разных. Я вообще задал вопрос, а вы отвечаете вопросом, тем более к новичку и просите меня объяснить вам чем я хочу заменить. Ответ "Я хотел заменить на снимок", но @Menelion объяснил что этого сделать нельзя, так как в них разный смысл. Вопрос уже не в том что бы заменить, а что бы понять.

Так скажите, каким словом вы собираетесь заменить слово коммит, тогда и поговорим.

В результате этой беседы уже вроде всем понятно, и уже даже мне понятно, что я не знаю что такое коммит (хотя и делаю их периодически). Так объясните русскими словами что такое коммит что бы я понял что это такое, а потом я вам скажу слово которым его заменить и вот тогда уже и поговорим. Я пытаюсь прочитать учебник и хочу понять в чём смысл. Но там не написано "коммит это - ", там написано

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

Тут есть слово "коммит". "Когда вы делаете коммит" эта фраза абсолютно непонятна, до этого слово никак не определено. А дальше оно вроде как определено после запятой, его определение "состояние", но до этого было

... клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени) ...

Чувствуете? "коммит - состояние", "снимок - состояние" и получается что "снимок - коммит"

Что такое коммит?
Что такое состояние?
Что такое снимок?
Чем они отличаются?
Как они друг к другу относятся?
Тут я уже ничего не имею ввиду под снимком, состоянием, коммитом. Я хочу узнать, что нужно иметь ввиду под этими понятиями. Книга этого не даёт, в силу плохого перевода, однако несомненно где-то в подсознании я это понял и как то пользуюсь СКВ, но это не годится, не понятно что происходит.

@DJm00n
Copy link
Author

DJm00n commented Jan 29, 2018

Тут я уже ничего не имею ввиду под снимком, состоянием, коммитом. Я хочу узнать, что нужно иметь ввиду под этими понятиями. Книга этого не даёт, в силу плохого перевода, однако несомненно где-то в подсознании я это понял и как то пользуюсь СКВ, но это не годится, не понятно что происходит.

Глава: 10.2 Git изнутри - Объекты Git объясняет это, хоть и мудрёно.
Кстати, существует также и профессиональный перевод ProGit 2 от издательства «Питер» - можете почитать там: https://www.piter.com/product_by_id/44690054 (на трекерах есть).

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

@DJm00n, спасибо. Там написано что коммит это зафиксированные данные. В первом же его употреблении.

@vlsi
Copy link

vlsi commented Jan 29, 2018

Так объясните русскими словами что такое коммит что бы я понял что это такое

Ну, мои пункты а..д как раз про описательную часть того, что из себя представляют коммит и снимок.

Предлагаю такие варианты (это не кандидаты на перевод, а просто попытка объяснить смысл слов):
"снимок"

Здесь в игру вступают децентрализованные системы контроля версий (ДСКВ). В ДСКВ (таких как Git, Mercurial, Bazaar или Darcs), клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени): они полностью копируют репозиторий

Смысл простой. Снимок файлов тут означает "в файле hello.txt хранится строка hello world". При этом, в понятие "снимок файлов" совершенно не вкладывается то, "каким образом мы пришли к этому состоянию". В "снимок файлов" не вкладывается и то, "какая история была вчера". В снимок файлов не вкладывается и то, "какие изменения мы сейчас делаем".
Снимок файлов это просто непривязанное к истории состояние.

Рассмотрим, например:
"состояние 1" : в файле hello.txt написано слово "hello" (и больше ничего нет)
"состояние 2": в файле hello.txt написано слово "hello world" (и больше ничего нет)

Глядя на одни только "состояния" невозможно понять какова была история развития проекта. Невозможно даже "просто" понять какое сейчас самое последнее состояние (т.к. сами по себе состояния никак не упорядочены).

И тут на поле выходят коммиты. Коммит описывает следующее: кто, когда, в какое состояние привёл файлы (состояние файлов в результате коммита), и в каком состоянии они были до этого (родительский коммит).
Именно коммиты выстраиваются в дерево за счёт того, что у почти у каждого коммита есть ссылка на предыдущий (или несколько предыдущих в случае merge).
У самого первого коммита нет "родительского", но это не так важно.

Заметьте, в коммите не просто "предыдущее состояние", а именно ссылка на "предыдущий" коммит (parent commit). Если бы в коммите было просто 2 ссылки на "текущее состояние файлов" и на "предыдущее состояние файлов", то из таких данных было бы невозможно понять историю развития проекта.
Например, кто-то может каждый день добавлять и удалять слово world из файла hello.txt. Тогда в репозитории будет всего только 2 состояния файлов, но при этом может быть куча коммитов, которые выстраиваются в цепочку, и по которой можно понять кто, когда и что сделал.

Именно по коммитам можно понять "какое состояние файлов" актуально сейчас, какое было вчера и т.п. Сами по себе "состояния файлов" не упорядочены, а коммиты задают частичный порядок истории репозитория.

@Dobrosvet
Copy link

@vlsi, вы даже отметили что вам не нравится предыдущий мой комментарий, как будто в книге упомянутой @DJm00n нету утверждения что коммит это зафиксированные данные. Или как будто я сказал "Всё утверждаем этот вариант". Это не так. Я просто указал на факт. А мне не нравится что вы хотите оставить коммит.

Воооот, теперь понятнее, спасибо.
В таком случае коммит похож на запись в журнале. Запись вроде соответствует всему что как вы говорите, описывает коммит и предложение

Вась, ты во вчерашнем коммите точно ту функцию вызвал?
Вась, ты во вчерашней записи точно ту функцию вызвал?

Так же выглядит хорошо, это уже не снимок, смысл которого некорректен. Вполне русское слово. Также вызывает нужные ассоциации. Мне даже стали понятны предложения из русской версии учебника. Даже короче английского слова получилось. Что вам тут не нравится?

И это тоже выглядит лучше

"зафиксировать изменения" / "вчерашний коммит"
"записать изменения" / "вчерашняя запись"

Предлагаю.
коммит - запись
закоммитить - записать

@vlsi
Copy link

vlsi commented Jan 29, 2018

вы даже отметили что вам не нравится предыдущий мой комментарий, как будто в книге упомянутой @DJm00n нету утверждения что коммит это зафиксированные данные

Я ту книгу не читал, но осуждаю. В этой книге уже был перевод "отбор лучшего" для операции "cherry-pick" #36 (comment).
Это крайне неудачный перевод.

Вась, ты во вчерашней записи точно ту функцию вызвал?
Так же выглядит хорошо, это уже не снимок, смысл которого некорректен

Запись слишком общее понятие. Ну, прямо реально слишком общее.
Обычно запись бывает в каком-то журнале, в каком-то файле. И слово запись не отражает физический смысл самой записи. Чтобы понять какой смысл несёт запись нужно посмотреть на её содержимое.

Слово коммит же отражает смысл, что "коммиты упорядочивают историю развития проекта".
Снимки файлов, на самом деле, это тоже записи в репозитории.

@Dobrosvet
Copy link

Dobrosvet commented Jan 29, 2018

А тут крайне не удачный перевод коммита

Что это за аргумент "общее"? Ключ тоже общее понятие, он много чего значит, но никто не говорит электронный кей, хоть он и появился относительно недавно. В разном контексте имеет разное значение и при этом он остался ключом. Ни разу в жизни не возникало путаницы о каком ключе говорится, скрипичном, родниковом, дверном и т.д. Что мешает сделать это для записей.

Записями тоже можно упорядочивать историю развития проекта. (ну уж не стану их составлять для примера, думаю сможете представить как они это делают, в одной ссылка на предыдущую в ней ещё и т.д. с уникальными идентификаторами и временем)
В контексте СКВ Git пусть записи обозначают ваши коммиты, а для файлов это будут снимки.

Не понял фразы

слово запись не отражает физический смысл самой записи

Какой она должна отражать в случае коммита? Ей это не под силу в отличии от коммита? почему?

@vlsi
Copy link

vlsi commented Jan 29, 2018

слово запись не отражает физический смысл самой записи

Имел ввиду, что запись не отражает то, что именно находится в этой записи.
Есть record, есть commit, есть filesystem snapshot. Всё это можно назвать общим термином запись, но каждое конкретное слово более точно отражает называемый объект.

В этом ключе слово commit точное.

Какой она должна отражать в случае коммита? Ей это не под силу в отличии от коммита? почему?

Слово коммит отражает, что речь не про абстрактную запись в репозитории, а именно про определённый тип записей, которые формируют историю развития репозитория.
История развития весьма важный концепт, и немудрено, что для разных типов записей нужны прямо разные слова.

Есть пример из области "как называть снег".
Казалось бы, достаточно одного слова "снег" и всего делов.
Но, профессионалы в этой области так не думают:

http://antropogenez.ru/quote/305/
Другими примером того же рода могут служить слова, служа­щие для обозначения «снега» в языке эскимосов. Здесь мы нахо­дим одно слово, обозначающее «снег на земле», другое — «падаю­щий снег», третье — «снежный сугроб», четвертое — «снежную вьюгу».

В том же языке тюлень в различных положениях обозна­чается различными терминами. Одно слово является общим тер­мином для «тюленя», другое означает «тюленя, греющегося на солнце», третье — «тюленя, находящегося на плавающей льдине», не говоря уже о многих названиях для тюленей разных возрастов и для самца и самки.

Вот вы пойдите к эскимосам и объясните им, что все их слова лишние, и достаточно одного слова "снег".

Так и со словами коммит / запись. коммит является частным случаем записи. снимок файлов может рассматриваться как частный случай записи. Поэтому использовать запись не годится, т.к. в этой предметной области важно сразу точно и метко указывать на то, про какую запись говорим.

@vlsi
Copy link

vlsi commented Jan 29, 2018

ну уж не стану их составлять для примера, думаю сможете представить как они это делают, в одной ссылка на предыдущую в ней ещё и т.д. с уникальными идентификаторами и временем

Вот как раз в этом и дело, что такой тип записей в Git называется коммитами.

@vlsi
Copy link

vlsi commented Jan 29, 2018

В разном контексте имеет разное значение и при этом он остался ключом. Ни разу в жизни не возникало путаницы о каком ключе говорится, скрипичном, родниковом, дверном и т.д.

С коммитами всё по-другому. В Git есть много разных типов записей. Все типы используются в рамках одной книги, и многие типы записей используются в одном предложении одновременно.

Вспомните, например, такое:

Git is fundamentally a linked list of commit objects that point to a snapshot of content

lined list это первый тип записей
commit это второй тип записей
snapshot of content это третий тип записей
И все эти записи используются в одном предложении.

Путаницы между дверным и скрипичным не возникает, т.к. обычно они не используются в одном предложении (да и в рамках одной статьи они нечасто используются вместе).

@Dobrosvet
Copy link

list это список и там пункты или элементы, а не записи
commit - запись
snapshot of content - снимок содержимого
Всё в контексте Git. Получается (простите за мой английский)

Основа Git связанный список объектов записей, которые указывают на снимки содержимого.

Путаницы вроде нет, даже никаких дополнительных уточнений я не использовал и всё в одном предложении.

@NickVolynkin
Copy link

NickVolynkin commented Jan 30, 2018

@Dobrosvet вы сетуете, что Git не адаптирован для того, чтобы его осваивали новички. Действительно, не адаптирован, а ещё и просто сложен. И языки программирования сложны, и всё остальное в IT достаточно сложное. Можно пойти дальше: строительство — сопромат, право — кучи законов и юридический язык, в космос полететь — надо на центрифуге тренироваться. Везде сложно, а причина этого проста. Инструменты делаются не для того, чтобы их осваивали новички. Они делаются, чтобы решать ими задачи реального мира. А реальный мир сложный, потому и инструменты сложные.

Пока что вы изучили основы Git. Вам сейчас кажется, что вы лучше всех понимаете, как всё должно быть устроено. Когда вы изучите ещё сколько-то — поймёте, почему всё устроено именно так. Это похоже на эффект Даннинга-Крюгера.

Термин «коммит» уже знают и используют сотни тысяч русскоязычных инженеров. Вы не сможете поменять их привычки и никто не сможет. Если в книге или переводе интерфейса использовать другой термин, то эта книга и интерфейс только вызовут раздражение. Насильно мил не будешь.

Перевод «коммит» выбрали не вам назло. Его выбрали, чтобы не мешать работать людям, которые уже к нему привыкли. Им и без этого сложно работать.

@Dobrosvet
Copy link

@NickVolynkin, я не понимаю меня вообще никто не воспринимает что ли, нет я понял я ни слова больше не скажу, только отвечу на ваш комментарий.
Во-первых утверждение

вы сетуете, что Git не адаптирован для того, чтобы его осваивали новички

Не верно, по тому что я не говорю "Адаптируйте Git для новичков, что бы им было легче", я не прошу адаптировать Git я прошу адаптировать слово одно лишь слово, которое составляет основу для изучения Git. Я утвержадаю что слово коммит не соответствует и не ассоциируется ни с чем что любой человек изучал до этого в своей жизни, а например 'запись' или хотя бы 'фиксированные данные' как бы она ВАМ не резала слух НОВИЧКАМ она была бы ПОНЯТНЕЕ изначально. Я прошу это не для профессионалов, а для НОВИЧКОВ, по тому что профессионалы уже прочитали эту книгу она им нафиг не нужна, когда уже не совсем новичок придёт работать к профессионалам они ему скажут" мы говорим коммит это значит 'фиксированные данные', а он скажет "Хорошо, мне понятно, будет коммит".
А я вам говорю что когда я читаю книгу я хочу ПОНИМАТЬ её по тому что для этого она предназначена, а в этой книге в начале даже нормального определения не даётся. Нормальное определение написал @vlsi его можно написать более литературно (в смысле именно для обучающей книги)

Вам сейчас кажется, что вы лучше всех понимаете, как всё должно быть устроено.

Да откуда вы это вообще берёте. Я ничего вообще, ничего в своей жизни не знаю лучше других, буквально! Я аутсайдер по тому что не понимаю как жить в этом мире, и даже на просьбу, я подчёркиваю ПРОСЬБУ и предлжение, такая реакция. Я не под вашим эфектом, я под вашим непонятно откуда взявшимся, выводом что я знаю что то лучше всех.

не мешать работать людям, которые уже к нему привыкли

Они РАБОТАЮТ они не читают книги по основам с которыми они уже работают и знают, иначе они бы не работали

Я пытаюсь учится, а вы пытаетесь не научить а унизить, спасибо за поддержку.

@vlsi
Copy link

vlsi commented Feb 10, 2018

и даже на просьбу, я подчёркиваю ПРОСЬБУ и предлжение, такая реакция. Я не под вашим эфектом, я под вашим непонятно откуда взявшимся, выводом что я знаю что то лучше всех.

@Dobrosvet , пока же всё выглядит так, что вы пришли в автошколу и предложили говорить вместо педаль газа слово педаль бензина. Ну, действительно. Машина заправляется бензином? Бензином. При чём тут газ? Зачем запутывать новичков? Новичкам же гораздо понятнее, если говорить педаль бензина.

Представляете себе реакцию водителей, если предложить во всех инструкциях вместо слова педаль газа поставить слово педаль бензина?

Может, попробуете слово файл перевести на русский, чтобы новичкам понятнее было? Ну, действительно, новичкам, ведь, вообще непонятно что значит файл.


По факту, да, чтобы предлагать, нужно разбираться в области. Если вы только пару раз пощупали слона, то это не повод просить авторов книг о внесении изменений в терминологию.

Сначала вы предлагаете переводить commit словом закрепить
Потом вы говорите, что слово снимок (как перевод слова commit) понятно без словарей
Потом вы переходите к варианту "запись"

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

запись является слишком общим термином. Если вы думаете, что для программистов слово запись может однозначно обозначать существительное commit, то вы глубоко заблуждаетесь.
Существует ли реально подходящее слово для перевода существительного commit -- без понятия. Но мне это не интересно. Вообще не интересно, т.к. не вижу ничего плохого в том, чтобы использовать новое слово (в том числе, заимствованное) для описания новой сущности.

Язык развивается, и вполне может быть, что в очередную редакцию "словаря Ожегова" (или куда там) добавят слово "коммит (сущ.) -- ..."

@Menelion
Copy link
Contributor

Коллеги, я в очередной раз прохожусь по первой части, сравнивая с английской версией и синхронизируя, где надо.
И вот я задумался: а почему у нас distributed VCS — это децентрализованная, а не распределённая СКВ? Честно, много раз и слышал, и читал именно о распределённых системах контроля версий в противовес централизованным.
Кто что думает?

@vlsi
Copy link

vlsi commented Dec 21, 2018

Да, похоже, что "распределённая" правильнее.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants