From 8a910cdabfef7c2ec4d729b99e598b84909c0df8 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Sat, 2 Jul 2016 10:34:18 +0300 Subject: [PATCH] fix block order bug --- codex-editor.js | 11 +++--- example.html | 97 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 83 insertions(+), 25 deletions(-) diff --git a/codex-editor.js b/codex-editor.js index c0ea152f..ac01aeb5 100644 --- a/codex-editor.js +++ b/codex-editor.js @@ -254,6 +254,7 @@ cEditor.renderer = { }, + /** * Asynchronously returns block data from blocksList by index * @return Promise to node @@ -926,7 +927,6 @@ cEditor.content = { newBlock.classList.add(cEditor.ui.BLOCK_CLASSNAME); newBlock.dataset.type = blockType; - if (workingNode) { cEditor.core.insertAfter(workingNode, newBlock); @@ -938,12 +938,13 @@ cEditor.content = { */ cEditor.nodes.redactor.appendChild(newBlock); - /** - * Set new node as current - */ - cEditor.content.workingNodeChanged(newBlock); } + /** + * Set new node as current + */ + cEditor.content.workingNodeChanged(newBlock); + }, diff --git a/example.html b/example.html index be0eb5d3..12b50904 100644 --- a/example.html +++ b/example.html @@ -100,16 +100,16 @@ }, { paragraph : { - text : 'На днях я получил очередной проект по разработке личного кабинета.
Как обычно, я открыл консоль, чтобы посмотреть историю проекта, ветки и все ли правки закомичены (от слова commit - фиксировать). Однако ничего из этого я не узнал — проект не содержал .git репозитория.
Эта ситуация в очередной раз заставила задуматься о том, как много разработчиков до сих пор не понимают необходимость контролировать изменения в файлах с исходным кодом. А многие и вовсе не знают что это такое, и как этим пользоваться.' + text : '

На днях я получил очередной проект по разработке личного кабинета.

Как обычно, я открыл консоль, чтобы посмотреть историю проекта, ветки и все ли правки закомичены (от слова commit - фиксировать). Однако ничего из этого я не узнал — проект не содержал .git репозитория.

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

' } }, - { + { link : { - 'linkUrl' : 'http://google.com', - 'linkText' : 'google.com', - 'image' : 'http://i1.kym-cdn.com/photos/images/facebook/000/002/110/longcat.jpg', - 'title' : 'Google', - 'description' : 'Поисковик, поисковик, проч.' + 'linkUrl' : 'http://yandex.ru', + 'linkText' : 'yandex.ru', + 'image' : 'https://yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png', + 'title' : 'Яндекс', + 'description' : 'Сайт, поисковик, проч.' } }, { @@ -154,7 +154,7 @@ { header : { type : 'H2', - text : 'Что такое git', + text : 'Основные термины и понятия при работе с системой Git', } }, { @@ -162,33 +162,90 @@ text : 'Репозиторий — дерево изменений проекта.', } }, + { + link : { + 'linkUrl' : 'http://google.com', + 'linkText' : 'google.com', + 'image' : 'http://i1.kym-cdn.com/photos/images/facebook/000/002/110/longcat.jpg', + 'title' : 'Google', + 'description' : 'Поисковик, поисковик, проч.' + } + }, { paragraph : { - text : 'Репозиторий — дерево изменений проекта.', + text : 'Ветка — указатель на коммит.

На один коммит может указывать несколько веток. Как правило это случается при создании новой ветки из текущей. Например для реализации в ней новой задачи. По мере добавления коммитов — ветки будут расходится в разные стороны.

' } }, + { + paragraph : { + text : 'Коммит (от слова commit - фиксировать) — логическая единица изменений.

Каждый из них имеет историю уникальный ID и цепочку предшествующих коммитов. Можно «откатить» (отменить) изменения любого из коммитов. Для любого коммита из истории можно создать указатель, то есть ветку.

' + } + }, + { + paragraph : { + text : 'Индекс — изменения, которые будут зафиксированы при следующем коммите.

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

' + } + }, + { + paragraph : { + text : '

В первое время вам понадобятся только основные команды. Давайте рассмотрим их:

' + } + }, + { + list : { + type : 'unordered', + items : [ + 'init — создает новый репозиторий', + 'status — отображает список измененных, добавленных и удаленных файлов', + 'branch — отображает список веток и активную среди них', + 'add — добавляет указанные файлы в индекс', + 'reset — удаляет указанные файлы из индекса', + 'commit — фиксирует добавленнные в индекс изменения', + 'checkout — переключает активную ветку; отменяет не добавленные в индекс изменения', + 'merge — объединяет указанную ветку с активной', + 'log — выводит список последних коммитов (можно указать количество и формат)' + ] + } + }, + { + header : { + type : 'H2', + text : 'Примеры команд для работы с Git' + } + }, + { + paragraph : { + text : '

Создайте новую папку для тестового проекта.

Чтобы начать работу с гитом, надо его инициализировать — открыть консоль, перейти в корневую папку проекта и выполнить команду:' + } + }, + { + code : { + text : '$git init' + } + }, + { + paragraph : { + text : '

Эта команда создаст новый пустой репозиторий. Проще говоря, появится папка .git с какими-то непонятными файлами. Причем такой репозиторий, который находится в папке проекта, файлы которого вы можете менять — называется «рабочей копией». Существуют еще «внешние копии» или bare-репозитории.

Все остальные команды можно вызывать в корневой папке или в одной из вложенных.

Теперь можно вносить изменения.

Список изменений можно увидеть выполнив команду:

' + } + }, + { + code : { + text : '$git status' + } + }, { paragraph : { text : 'После создания нового репозитория дерево содержит только одну ветку — master. Ветка состоит из коммитов, расположенных в хронологическом порядке. Как правило, в ветке master находятся проверенные и протестированные изменения.' } }, - { - link : { - 'linkUrl' : 'http://yandex.ru', - 'linkText' : 'yandex.ru', - 'image' : 'https://yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png', - 'title' : 'Яндекс', - 'description' : 'Сайт, поисковик, проч.' - } - }, ]; /** * @todo uncomment and append all text to items * ..... - *

Ветка — указатель на коммит.  
На один коммит может указывать несколько веток. Как правило это случается при создании новой ветки из текущей. Например для реализации в ней новой задачи. По мере добавления коммитов — ветки будут расходится в разные стороны.

Коммит (от слова commit - фиксировать) — логическая единица изменений.
Каждый из них имеет историю уникальный ID и цепочку предшествующих коммитов. Можно «откатить» (отменить) изменения любого из коммитов. Для любого коммита из истории можно создать указатель, то есть ветку. 

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

В первое время вам понадобятся только основные команды. Давайте рассмотрим их:

Примеры команд для работы с Git

Создайте новую папку для тестового проекта.

Чтобы начать работу с гитом, надо его инициализировать — открыть консоль, перейти в корневую папку проекта и выполнить команду:

- * $ git init

Эта команда создаст новый пустой репозиторий. Проще говоря, появится папка .git с какими-то непонятными файлами. Причем такой репозиторий, который находится в папке проекта, файлы которого вы можете менять — называется «рабочей копией». Существуют еще «внешние копии» или bare-репозитории.

Все остальные команды можно вызывать в корневой папке или в одной из вложенных.

Теперь можно вносить изменения.

Список изменений можно увидеть выполнив команду:

$ git status

В консоли появится список измененных файлов.

Добавьте файлы, изменения в которых вы хотите зафиксировать:

$ git add file_name_a.php

Файлы можно указывать через пробел. Все файлы в данной папке и ее подпаках можно добавить командой:

$ git add .

Будьте внимательны, эта команда не добавит новые файлы в индекс. Добавятся только модифицированные старые файлы и удаленные. Новые файлы можно добавить явно указав имя. 

Добавить все новые и измененные файлы можно командой:

$ git add -A

Изменения стоит фиксировать логическими блоками, то есть в одном коммите должны быть файлы связанные с решением одной конкретной ошибки или одной конкретной новой задачи.

Если вы добавили файл из другого логического блока, удалите его из индекса командой:

$ git reset file_name_b.php

Зафиксируйте эти изменения в другом коммите. Так будет удобнее при просмотре истории изменений и отмене изменений.

Если вы случайно изменили не тот файл - верните его к последнему зафиксированному состоянию командой:

$ git checkout file_name_c.php

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

$ git checkout -- .

Ненужные новые файлы достаточно просто удалить. Или это можно сделать командой:

$ git reset --hard HEAD

Проект будет полностью приведен к последнему зафиксированному состоянию.

Теперь зафиксируйте изменения добавленные в индекс:

$ git commit

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

fix| order price

now price includes vat

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

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

Теперь можно посмотреть историю изменений, ваш коммит должен в ней отобразиться:

$ git log

Заключение

Как видите, ничего сложного.

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

+ * + *

$ git status

В консоли появится список измененных файлов.

Добавьте файлы, изменения в которых вы хотите зафиксировать:

$ git add file_name_a.php

Файлы можно указывать через пробел. Все файлы в данной папке и ее подпаках можно добавить командой:

$ git add .

Будьте внимательны, эта команда не добавит новые файлы в индекс. Добавятся только модифицированные старые файлы и удаленные. Новые файлы можно добавить явно указав имя. 

Добавить все новые и измененные файлы можно командой:

$ git add -A

Изменения стоит фиксировать логическими блоками, то есть в одном коммите должны быть файлы связанные с решением одной конкретной ошибки или одной конкретной новой задачи.

Если вы добавили файл из другого логического блока, удалите его из индекса командой:

$ git reset file_name_b.php

Зафиксируйте эти изменения в другом коммите. Так будет удобнее при просмотре истории изменений и отмене изменений.

Если вы случайно изменили не тот файл - верните его к последнему зафиксированному состоянию командой:

$ git checkout file_name_c.php

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

$ git checkout -- .

Ненужные новые файлы достаточно просто удалить. Или это можно сделать командой:

$ git reset --hard HEAD

Проект будет полностью приведен к последнему зафиксированному состоянию.

Теперь зафиксируйте изменения добавленные в индекс:

$ git commit

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

fix| order price

now price includes vat

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

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

Теперь можно посмотреть историю изменений, ваш коммит должен в ней отобразиться:

$ git log

Заключение

Как видите, ничего сложного.

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

*/