Локальные копии скетчей или контроль версий

Densl
Offline
Зарегистрирован: 28.11.2018

Здравствуйте. Приходится постоянно переносить скетчи с одного компа на другой при помощи флешки. В итоге часто путаюсь и случайно заменяю последнюю версию более старой. Где-то попадалась инфа что среда ардуина может архивировать скетчи, но к сожалению найти не получается. Ткните носом как это настроить пожалуйста.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Git настроить, и всё.

b707
Offline
Зарегистрирован: 26.05.2017

или подключить ко всем компам, к примеру. Гуглдиск и редактировать скетчи на нем

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

DIYMan, а можно типа курсов по этому? Ну или гайд какой-то. Типа пойти туда, нажать там.

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

Редактор - встроенный в FAR, так что как-то давайте без Атома (не встаёт на 7 без дотнетфрамеворка, шваль). А потому что дроволёт мой на 32-нанометровом ноутбучном пне, которому 6 лет, и хрен будет работать без фризов под дотнетфрамеворком, и плевать ему будет сколько там у меня гектаров памяти и какой ссд. А я эти микрофризики когда я мышкой по меню тыкаю, а оно не сразу отзывается, и там делей то тьфу сотни миллисекунд, но меня эти сотни мсек ой как бесят, я прям ярость выхватываю.

Максимум что соглашусь поставить себе - сублайм, если есть на него какие-то плуги для гита, и всё это пашет благополучно на 7 и не надо обновлять директх или накатывать десятку. КОМП ДРЕВНИЙ. вот прям древний древний. И бабла обновлять не предвидится.

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Меня не обламывает сделать F5  в папку Windows-Git клиента, закоммитить и синкнуть. Но я и нечасто бегаю между компами.

Densl
Offline
Зарегистрирован: 28.11.2018

Нашел! Ключевое слово openWindAir.
Про Git тоже подумаю.

sadman41
Offline
Зарегистрирован: 19.10.2016

openWindAir синхронизирует папки?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Voodoo Doll пишет:

DIYMan, а можно типа курсов по этому? 

Про то, как работать с гитом? Курсов всяких есть, например: https://githowto.com/ru Графические оболочки тоже есть, например, если юзать сервис Github, то тамошний Github desktop.

Если вкратце, то: создаём на одном компе репозиторий, добавляем в него файлы, коммитим, пушим в хранилище. Потом на любом из компов клонируем репозиторий изханилища, и всё. Далее - редактируем на любом из компов любой файл в репозитории, коммитим, делаем push. На другом компе делаем pull, при необходимости - разруливаем конфликты, коммитим, делаем push. В любой момент (например, для тестирования "скользких" изменений) можно сделать ветку, переключиться на неё, работать с ней.

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

Для совместной работы юзаю Github, да и не для совместной - тоже. Необходимости заходить на сайт гитхаба при этом - нет совсем, всё делается через гит.

В общем же разрезе - любой  git-клиент по вкусу, и пофиг. Многие IDE уже давно умеют работать с git, вопрос только настроек.

Я ни разу не объяснялкин, хотя бы потому, что там реально кучу всяких фишек. По ссылке, что я привёл - самые основы, надеюсь, они лучше прояснят.

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Пользуюсь ЯндексДиском(200Гб на всю оставшуюся бесплатно) .

И  ИДЕ(несколько версий портабл для разных случаев) ,и , само собой , папка со скетчами  находится на Яндекс диске.Захожу  с трех компов когда мне удобно.Синхронизация быстрая т.к. скетчи занимают мало места.

До этого скетчи были в Dropbox.Просто в Дропбоксе на шару более 3Гб не получилось добыть.

Densl
Offline
Зарегистрирован: 28.11.2018

sadman41 пишет:

openWindAir синхронизирует папки?


Нет конечно. Там есть бат файл и написано как при компиляции его запускать. Сам батник копирует скетч и бинарник при компиляции в определенное место.

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Если использовать облачные диски, то какой там контроль версий?
Не представляю как делать ветки от мастера (или просто метки поставить) если пользоваться этими сервисами.
Если отвечать на "Локальные копии скетчей или контроль версий" то:
Локальные копии скетчей - HET! ;(
контроль версий - Обязательно и никак иначе.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Я за GIT. Пользовался как-то GIT + Bitbucket, вполне удобно.

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Алексей. пишет:

Если использовать облачные диски, то какой там контроль версий?
 

В смысле? Какой контроль версий?  С Яндекс Диск и Дропбох ты как -будто на одном компе работаешь- сохранил скетч дома ,пришел на работу и тот -же скетч продолжаешь кодить.Завершил , сохранил и ,придя домой, залил в дуню.Или я тебя не понял?А версии - при помощи "сохранить как" и новое имя.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

DIYMan, спасибо за инфу, почитаю.

b707
Offline
Зарегистрирован: 26.05.2017

nikolaki - вы реально не знаете такого термина, как "система контроля версий" - или это просто в полемическом запале написано? С CVS , RCS итому подобное - никогда не работали?

Попробуйте - узнаете много нового.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

nikolaki пишет:

А версии - при помощи "сохранить как" и новое имя.

В разрезе темы: это не версии, это просто файлы с разным содержимым. Система контроля версий - позволяет несколько больше (несколько - это сильное такое преуменьшение). И обеспечивает версионность, исходя из совсем другого набора данных, нежели просто "копия файла". Очень актуально, когда над проектом работают хотя бы полтора землекопа. Да даже если и один пахарь - тоже очень удобно: я всегда могу по желанию вытащить проект в любом промежуточном состоянии (а проект почти никогда из одного файла не состоит) и отдать его юзеру на съедение. При этом продолжая работать над проектом, и даже имея в гите все новые, но ещё не выпущенные в продакшн изменения. 

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

b707
Offline
Зарегистрирован: 26.05.2017

DIYMan пишет:

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

я в линуксе раньше начинал c RCS, сейчас в основном WinCVS пользую с размещением репозитория на Гугль-диске. В итоге как бы сетевая система получается с доступом с любого компа.

Единственное, что никак не могу освоить - это ветви (branch). Вот, скажем, в какой-то момент я выделил в проекте новую ветвь, и написал в ней новый метод А. А в основном проекте за это время добавил метод В. В обоих ветках по-отдельности все отладил. Как мне теперь слить ветви, чтобы в конечной версии были последние изменения из обоих ветвей?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

b707 пишет:

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

https://git-scm.com/book/ru/v1/%D0%92%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-Git-%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-%D0%B2%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D1%8F

Вкратце: создаём ветку "git checkout -b "имя ветки"", переходим в неё, делаем там, что надо, убеждаемся, что всё зашибись, переходим обратно в master "git checkout master", потом "git merge "имя ветки, с которой сливаем"". И всё сольётся, конфликты слияния, ессно (если возникнут) - надо будет разрешить, и всё.

По ссылке - годная статья ;)

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

b707 пишет:

nikolaki - вы реально не знаете такого термина, как "система контроля версий" - или это просто в полемическом запале написано? С CVS , RCS итому подобное - никогда не работали?

Попробуйте - узнаете много нового.

Честно сказать - не знал , т.к. не нуно было. Работаю сам , быдлокодом не делюсь.Поэтому даже не искал что то подобное. А теперя , почитав, понял- нуная штука.После праздников -сразу с утра 24 февраля- начну внедрять  в свою систему.

Всех с НАСТУПАЮЩИМИ НОВОГОДНИМИ ПРАЗДНИКАМИ!Заранее.А то потом не смогу написать.

DIYMan, спасибо за инфу!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DIYMan, ты бы какой пошаговый ликбез\мастеркласс провел, штоли.  Если время есь, канеш.

Densl
Offline
Зарегистрирован: 28.11.2018

Да там все просто. Поставил себе GUI к git. Теперь управлять стало проще и надежнее. Пожалуй на нем и остановлюсь. 

arduinec
Offline
Зарегистрирован: 01.09.2015

Densl пишет:
Приходится постоянно переносить скетчи с одного компа на другой при помощи флешки. В итоге часто путаюсь и случайно заменяю последнюю версию более старой.

Самый простой способ: редактировать файлы на флешке - тогда там будет самая последняя версия.

Для командной строки есть программка 10-летней давности nnBackup (http://www.nncron.ru/index_ru.shtml) - она может синхронизировать каталоги. Каталоги и файлы с русскими именами она нормально обрабатывает, но иногда были проблемы когда в имени попадались некоторые нестандарные символы типа кавычек.
На том же сайте есть и более свежая программа nnSync (которая по описанию тоже может синхронизировать каталоги), но я ей не пользовался (пока хватает nnBackup).

ku-ku
Offline
Зарегистрирован: 14.11.2018

http://habrahabr.ru/post/205204/

мож до пользы будет.

Смысл следующий: указываешь какие папки обрабатывать и куда класть.
Оно берет те папки и помещает в НАЗНАЧЕНИЕ. В назначении делает папку с именем текущей даты и времени.
Главный прикол в том, что те файлы, которые небыли изменены в предыдущей копии - они ложаться как хардлинки на ту предыдущую копию. То есть место тратится только на измененные файлы.

Не самое лучшее решение, но вполне себе годящееся!

ku-ku
Offline
Зарегистрирован: 14.11.2018

DIYMan пишет:
(давнишняя паранойя про яйца в одной корзине)

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

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Всех с Новым годом!

Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?

kalapanga
Offline
Зарегистрирован: 23.10.2016

vdm пишет:

Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?

Вся эта тема - ответ на Ваш вопрос. Используйте любую систему контроля версий, например, git.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

vdm пишет:

Всех с Новым годом!

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

Чтобы этого не происходило достаточно убрать вот тут мааааааааааааленькую птичку:

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

trembo пишет:

Чтобы этого не происходило достаточно убрать вот тут мааааааааааааленькую птичку:

 

намек понял. Пошел на охоту! Спасибо за подсказку! Еще раз с Новым годом!

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А вот тут этот символ появляется если скетч изменён и не сохранён
и исчезает после сохранения:

Logik
Offline
Зарегистрирован: 05.08.2014

kalapanga пишет:

vdm пишет:

Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?

Вся эта тема - ответ на Ваш вопрос. Используйте любую систему контроля версий, например, git.

Вобще не совсем так. Система контроля версий предполагает что разраб делает комит. И если он не забывает это - ОК. Откат разумеется до закомиченой ревизии. И если не комитить каждый раз то система контроля версии не спасет от потерь самого свежего. А вот если дисциплинировано комитить каждый чих, то.. можна ограничится и копированием дорабатываемого файла ))) В общем систему контроля версий для професиональной работы, да еще и в коллективе - незаменимая и обязательная. Без бранчей, мерджей откатов и истории доработок просто немыслемо. Много лет пользуюсь SVN. Но дома для ардуины ограничиваюсь копиями дорабатываемого файла после успешного этапа разработки и в ответственных точках. Кесарю - кесарево, слесарю - слесарево ;)

Интересно бы автоматизировать процес, чтоб из IDE после каждой успешной сборки автоматом вызывался некий батничек который делел нужное, в git-е комитил или копированием и архивированием - не суть. В VS такое делается запросто, при рабооте просто с gcc тоже запросто. А тут - надо поискать возможность.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Для этого в Arduino IDE есть хуки (hooks). В platform.txt настраивается. Можно запускать до компиляции или после любые батники.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
Logik
Offline
Зарегистрирован: 05.08.2014

Спасибо, гляну.

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Jeka_M пишет:
Для этого в Arduino IDE есть хуки (hooks). В platform.txt настраивается. Можно запускать до компиляции или после любые батники.
К сожалению не удалось найти описание переменных, доступных в хуках, единственное что удалось найти это — build.ххх, но билд работает с копией во временной директории.
Для комита как раз временная директория не интересна, а интересна директория с оригинальными исходниками, из которых делается копия.
Вот переменной для этой директории и не удалось найти (может плохо искал).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Не оно?

{source_file} - the path to the source file

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Немножко не оно, на нашелся как то сам собой build.source.path

в платформ.локал.тхт вызываю постбилд.локал передавая переменные
recipe.hooks.sketch.postbuild.0.pattern = {runtime.platform.path}/postbuild.local {build.source.path} {build.path} {build.project_name} {source_file}

в постбилд.локал просто вывожу то что передали
#!/bin/bash
echo build.source.path $1
echo build.path $2
echo build.project_name $3
echo source_file $4

вывод:
build.source.path /home/alex/Arduino/sketch_jan05b
build.path /tmp/arduino_build_333029
build.project_name sketch_jan05b.ino
source_file {source_file}
 

Типа от build.source.path и плясать можно.

Logik
Offline
Зарегистрирован: 05.08.2014

Ноты для пляски наковырял.

The pre- and post- build hooks are listed as:

recipe.hooks.sketch.prebuild.NUMBER.pattern (called before sketch compilation)
recipe.hooks.sketch.postbuild.NUMBER.pattern (called after sketch compilation)
recipe.hooks.libraries.prebuild.NUMBER.pattern (called before libraries compilation)
recipe.hooks.libraries.postbuild.NUMBER.pattern (called after libraries compilation)
recipe.hooks.core.prebuild.NUMBER.pattern (called before core compilation)
recipe.hooks.core.postbuild.NUMBER.pattern (called after core compilation)
recipe.hooks.linking.prebuild.NUMBER.pattern (called before linking)
recipe.hooks.linking.postbuild.NUMBER.pattern (called after linking)
recipe.hooks.objcopy.prebuild.NUMBER.pattern (called before objcopy recipes execution)
recipe.hooks.objcopy.postbuild.NUMBER.pattern (called after objcopy recipes execution)
recipe.hooks.savehex.prebuild.NUMBER.pattern (called before savehex recipe execution)
recipe.hooks.savehex.postbuild.NUMBER.pattern (called after savehex recipe execution)

For linking, objcopy and savehex, these are incorrect. The software currently recognises:

recipe.hooks.linking.prelinking.NUMBER.pattern (called before linking)
recipe.hooks.linking.postlinking.NUMBER.pattern (called after linking)
recipe.hooks.objcopy.preobjcopy.NUMBER.pattern (called before objcopy recipes execution)
recipe.hooks.objcopy.postobjcopy.NUMBER.pattern (called after objcopy recipes execution)
recipe.hooks.savehex.presavehex.NUMBER.pattern (called before savehex recipe execution)
recipe.hooks.savehex.postsavehex.NUMBER.pattern (called after savehex recipe execution)

It looks like I can edit the wiki myself, but I'm not sure if that's the correct thing to do. I'm new to this.

 

Но не вытанцовывается в целом.

В файл \Arduino\hardware\arduino\avr\platform.txt докинул строку

recipe.hooks.sketch.postbuild.0.pattern = "{runtime.platform.path}/postbuild.bat" {build.source.path} {build.path} {build.project_name} {source_file}
 
И сам postbuild.bat из того же каталога стартует, только работает черте как, как вроде прав ему какихто не хватает. Пишу в нем например удалить файл. Если файл существует - молча выполняет, но файл не удаляет. Если файл не существующий - ругается в окне IDE на отсутствие файла. И Echo не работает.
 
ПС. И точно, происки винды похоже, под админом вроде хоть файловые операции делает.
 

 

Logik
Offline
Зарегистрирован: 05.08.2014

Победил вобщем. 


SET bak=%1.bak\%date%

If Not Exist "%bak%" MD "%bak%"

SET t=%time:~0,8%
set "t=%t::=_%"
SET rar=%bak%\%t%

WinRAR.exe a %rar% %1

WinRAR.exe в папку с arduino.exe закинул. Всю папку свежесобраного проекта ужимает и именует архив по текущему времени. Теперь еще с либами аналогично запилить бы.