iPython дуже зручний замінник вбудованого інтерпритатора python.exe та
командного cmd.exe(в режимі командного інтерпритатора pysh). Проте його
розповсюдженню заважає також відсутність прикладів використання. Мені
цікаво було автоматизувати за його допомогою невелике реальне завдання. mercurial - нова для мене та поки слабо досліджена система, проте вже є достатьньо проектів які ведуться в цій VСS і за розвитком яких я стежу. Якщо для subversion є настільний клієнт Tortoise SVN , який покриває мої потреби на 100%, то для mercurial прийнятного GUI-клієнта поки немає. Аналог Tortoise SVN, Tortoise Hg має один неприємний дефект, він конфліктує з встановленим Wing IDE, тому я від Tortoise Hg відмовився. Незручність для мене консольного клієнта в тому що мені треба зайти в кожну папку проекту і там маю виконати послідовність команд hg pull, hg update. Цю задачу було автоматизовано невеликим скриптом для iPython(інтерактивна консоль длоя Python). Зауважу що я використовую iPython в режиму роботи командної оболонки , для цього він запускається з опціями ipython -p sh . Всі дії проводилися на Windows XP\Vista проте повинно працювати без змін і на будь-якому xUnix/Linux де можна встановити Python та mercurial. Всі проекти які я відстежую в мене зберігаються наступним чином: some_drive\repository\svn\proj1Для рекурсивного оновлення проектів в підпапках я написав такий скрипт: Розберемо по черзі що відбувається:
!hg pull !hg update та повернеться на рівень вверх. Збережемо як макрос цей код, для повторного використання, для цього виконаємо наступну команду: %macro hgrecupdate 150-151 , де hgrecupdate назва макроса, 150-151 - номери рядків в яких введено код макроса.Щоб протестувати його роботу виконаємо наступні команди.
cd E:\repository\hg\ - команда зміни поточної директорії
(треба зауважити, що системну команду !cd використовувати не
рекомендовано, тому тут в реальності викликаєтьсся вбудована магічна
команда(magic command) %cd, але оскільки по замовчуванню ввімкнуто
режим автопідстановки, то знак '%' писати необов'язково).
Зразок виконання макроса зображено нижче:
hgrecupdate Проте, закінчивши роботу інтерпритатора ми виявимо, що макроси не зберігаються між сесіями. Тому для цього викличемо %store hgrecupdate макрос буде збережено в постійній пам'яті і його можна буде викликати в наступних сесіях. Розв'язуючи реальну задачу я показав тільки деякі прості методики роботи з інтерактивним інтерпритатором iPython в режимі командної оболонки. Проте для складніших задач вам прийдеться зануритися в документацію. |