Comments 49
Вопрос не по теме интеграции, а по постановке задачи.
> что бы при коммите в git, автоматически в TrackStudio задача получала статус завершена
А разве коммит в систему контроля версий означает, что задача закрыта?
Коммит — это лишь внесение дельты под контроль версий. В моём понимании задача закрыта тогда, когда вносимые изменения протестированы и кто-то, выполняющий роль проверяющего, посчитал, что по задаче больше не надо ничего делать и её можно закрыть.
Поправьте, плз, если я недопонял постановку задачи или логику работы TrackStudio.
А за техническое решение — мой плюс.
> что бы при коммите в git, автоматически в TrackStudio задача получала статус завершена
А разве коммит в систему контроля версий означает, что задача закрыта?
Коммит — это лишь внесение дельты под контроль версий. В моём понимании задача закрыта тогда, когда вносимые изменения протестированы и кто-то, выполняющий роль проверяющего, посчитал, что по задаче больше не надо ничего делать и её можно закрыть.
Поправьте, плз, если я недопонял постановку задачи или логику работы TrackStudio.
А за техническое решение — мой плюс.
да согласен коммит — это всего лишь применение изменений.
Я лучше напишу так:
что бы при коммите в git, автоматически в TrackStudio задаче добавлялся комментарии с различными типами сообщения.
Я лучше напишу так:
что бы при коммите в git, автоматически в TrackStudio задаче добавлялся комментарии с различными типами сообщения.
В Redmine можно указать просто номер задачи в commit message #146 и коммит будет виден из задачи. А можно написать что-то типа fixes #146 и состояние задачи будет изменено. То есть, задача не обязательно будет закрыта, а, например, помечена разработчиком, как реализованная — в противном случае разработчику пришлось бы делать это отдельно в баг-трекере. Конечно, совершенству нет предела — неплохо бы и затраченное время заполнять автоматом, но такого, вроде, нет.
Да, Редмайн весьма продвинут, в том числе и в этом вопросе. Но, повторюсь, автоматическое закрытие записи — это не есть хорошо. Только человек и только после детального разбора результатов работы.
В TS вообще есть интеграция с многими SCM, и она работает по тому принципу что вы описали.
Но пока они не хотят реализовывать интеграцию с Git, но мне это не мешает.
Но пока они не хотят реализовывать интеграцию с Git, но мне это не мешает.
Замечание по поводу скрипта, создающего правило импорта: гораздо проще создать одно правило вручную и написать простенький скрипт Create Task/Before Trigger (а возможно InsteadOf Trigger), который будет разбирать название создаваемой задачи (которое суть поле subject письма) и описание задачи (которое формируется из тела письма), вырезать нужное-ненужное и создавать хоть 100500 задач в нужных местах.
приведи пример!
У меня то подразумевается в первую очередь добавление комментариев к существующим задачам. А сама возможность создания задач по средствам импорта писем это уже побочное действие TS (но уж очень удобное)
У меня то подразумевается в первую очередь добавление комментариев к существующим задачам. А сама возможность создания задач по средствам импорта писем это уже побочное действие TS (но уж очень удобное)
Ну комментарии к существующим задачам создаются непосредственно из писем с решеткой и номером задачи в subject. Нужно только правило создания повыше засунуть, в корень проекта (не корень TS)
а как же объяснить TS что надо создать задачу именно в нужном проекте, если правило будет висеть в корне.
То есть перемещать в нужное место так?
То есть перемещать в нужное место так?
У утилиты №3 говорящее название :-)
зачем надо было «так» замазывать artzub@gmail.com если оно отлично читается? :)
а как оно если сравнить с git + trac vs git + TrackStudio?
А я почту так шлю:
#!/usr/bin/python
# -*- coding: utf8 -*-
MAILSERVER='10.0.0.5'
FROM = 'dem@nospam.ru'
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
def sendMail(to, subject, text, files=[],server=MAILSERVER):
assert type(to)==list
assert type(files)==list
fro = FROM
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
text_message = MIMEText(text)
text_message.set_charset('UTF-8')
msg.attach( text_message )
for file in files:
part = MIMEBase('application', «octet-stream»)
part.set_payload( open(file,«rb»).read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msg.as_string() )
smtp.close()
sendMail(
[«dem@nospam.ru»],
«test»,«Проверка»
)
#[«photo.jpg»,«memo.sxw»]
#!/usr/bin/python
# -*- coding: utf8 -*-
MAILSERVER='10.0.0.5'
FROM = 'dem@nospam.ru'
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
def sendMail(to, subject, text, files=[],server=MAILSERVER):
assert type(to)==list
assert type(files)==list
fro = FROM
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
text_message = MIMEText(text)
text_message.set_charset('UTF-8')
msg.attach( text_message )
for file in files:
part = MIMEBase('application', «octet-stream»)
part.set_payload( open(file,«rb»).read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msg.as_string() )
smtp.close()
sendMail(
[«dem@nospam.ru»],
«test»,«Проверка»
)
#[«photo.jpg»,«memo.sxw»]
Парсер гад:
#!/usr/bin/python
# -*- coding: utf8 -*-
MAILSERVER='10.0.0.5'
FROM = 'dem@nospam.ru'
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
def sendMail(to, subject, text, files=[],server=MAILSERVER):
assert type(to)==list
assert type(files)==list
fro = FROM
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
text_message = MIMEText(text)
text_message.set_charset('UTF-8')
msg.attach( text_message )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msg.as_string() )
smtp.close()
sendMail(
["dem@nospam.ru"],
"test","Проверка"
)
#["photo.jpg","memo.sxw"]
и на gmail хорошо отправляет!
если да, то такой вариант более удобен, 2 связки сразу уходят.
если да, то такой вариант более удобен, 2 связки сразу уходят.
Да вот такая версия отправила на раз:
Только учтите у меня IP соответсвует домену моему и я из него и отправляю хотя на адрес гугловского сервера. Если что шлите через SMTP своего провайдера.
#!/usr/bin/python
# -*- coding: cp1251 -*-
MAILSERVER='gmail-smtp-in.l.google.com'
FROM = 'dem@nospam.ru'
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
def sendMail(to, subject, text, files=[],server=MAILSERVER):
assert type(to)==list
assert type(files)==list
fro = FROM
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
text_message = MIMEText(text)
text_message.set_charset('UTF-8')
msg.attach( text_message )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msg.as_string() )
smtp.close()
sendMail(
["NOSPAM@gmail.com"],
"test","Testing"
)
#["photo.jpg","memo.sxw"]
Только учтите у меня IP соответсвует домену моему и я из него и отправляю хотя на адрес гугловского сервера. Если что шлите через SMTP своего провайдера.
и на gmail хорошо отправляет? это вопрос опечатался.
А чем не устраивает входящий в комплект msmtp.exe? Умеет слать и через gmail тоже.
В папке профиля создается файл msmtprc.txt с таким содержимым — все прекрасно работает
В папке профиля создается файл msmtprc.txt с таким содержимым — все прекрасно работает
# setup some defaults
defaults
tls_trust_file C:/Git/bin/curl-ca-bundle.crt
logfile ~/.msmtp.log
# create an account called «default»
account default
# setup server host and port
host smtp.gmail.com
port 587
# enable TLS
tls on
# set FROM address
from username@gmail.com
# setup authentication
auth on
user username@gmail.com
Поиск по диску C: файла msmtp.exe не дал результата.
Прошу прощения… Я как с самого начала настроил так и работает. Информацию брал с git tips, поэтому и вклинилось в голову что идет с msysgit. На самом деле она действительно распространяется отдельно, а вот статья
git.wiki.kernel.org/index.php/GitTips#Using_msmtp_to_send_your_patches
git.wiki.kernel.org/index.php/GitTips#Using_msmtp_to_send_your_patches
он файлики слать не умеет. Я пробовал и писал статью вот habrahabr.ru/blogs/Git/78193/
Как не умеет? А я как шлю в mantisbt-dev (at) lists.sourceforge.net. Например, sourceforge.net/mailarchive/forum.php?thread_name=1295871921-5132-1-git-send-email-krasnovforum%40gmail.com&forum_name=mantisbt-dev
Сочувствую тем, кто использует TrackStudio. Более неудобного и кривого продукта не встречал (опыт использования 2 года). Наконец-то начинаем с него съезжать. Авторам данного творения посылаю лучи.
а что вас не устраивает в нем?
Общее убожество, глючность (постоянно бьются страницы), абсолютно ебанутая система переноса задач — это первое, что пришло на ум. У нас в конторе 6 менеджеров, ни один положительно не отзывается о трек студио спустя 2 года использования. Не могу назвать ни одной вещи, чем бы TrackStudio мне нравился.
И, вдобавок, иностранные ребята не говорят «чтооо?» при упоминании TrackStudio.
а вы какой версией пользуетесь?
ну и конечно не кто вам не запрещает написать свой интерфейс для TS у нее же есть такая возможность, я как нибудь напишу статью.
Мы эту вещь купили чтобы она экономила нам время и деньги, а не для того, чтобы потратить на неё время наших программистов. CSS-ку для хоть какой-то оптимизации интерфейса у нас кто-то всё-таки сделал, но проблему бьющихся страниц CSS-ка не решила, как вы понимаете.
Версия 3.5.
Версия 3.5.
эта стать посвящена версии 4,
она много чем отличается от 3.5 и проблем с интерфейсом нет.
ну вообщем на вкус и цвет товарищей нет.
Видимо у меня просто больше положительных впечатлении от TS и моим требованиям все соответствует.
она много чем отличается от 3.5 и проблем с интерфейсом нет.
ну вообщем на вкус и цвет товарищей нет.
Видимо у меня просто больше положительных впечатлении от TS и моим требованиям все соответствует.
В этом корень проблем. Мне тоже не нравится, как 3.5 работает «из коробки». Но возможностей настроить под себя у TS гораздо больше, чем у конкурентов.
1) А какая именно 3.5? В последнее время (год-полтора) багрепорты по 3.5 приходили с интенсивностью 1 штука в пару месяцев (т.е. довольно редко). Сейчас никаких открытых проблем с выводом страниц в 3.5 нет, насколько я знаю.
2) Что не нравится с переносом задач, если не секрет? Вроде обычный cut/paste, я даже не представляю как еще можно сделать.
3) Интерфейс в 3.5 был в самом деле не слишком удобным, но эта версия была выпущена в 2006 году, с тех пор много изменилось. Вот список what's new от 4.0:
www.trackstudio.ru/whatsnew.html
2) Что не нравится с переносом задач, если не секрет? Вроде обычный cut/paste, я даже не представляю как еще можно сделать.
3) Интерфейс в 3.5 был в самом деле не слишком удобным, но эта версия была выпущена в 2006 году, с тех пор много изменилось. Вот список what's new от 4.0:
www.trackstudio.ru/whatsnew.html
1. 3.5.56. Интересный момент: мы ни разу не писали багрепорты по данному продукту. Даже не могу объяснить почему. Может быть из-за того, что всего в нём не перечинишь %)
2. Большинство наших менеджеров в первое время вообще не понимали, что таким способом можно перенести задачи. Потом один всё-таки допёр до этого (и ведь нельзя сказать, что у нас тормоза работают), после чего все остальные (включая меня) удивились, что оно так странно и неудобно сделано. Имхо, перенос должен быть в т.ч. в настройках задачи, т.е. при её редактировании должна быть возможность перенести её в любую ветвь иерархии.
3. Мы купили эту версию в первой половине 2009 года, т.е. далеко не в бог знает какие времена.
2. Большинство наших менеджеров в первое время вообще не понимали, что таким способом можно перенести задачи. Потом один всё-таки допёр до этого (и ведь нельзя сказать, что у нас тормоза работают), после чего все остальные (включая меня) удивились, что оно так странно и неудобно сделано. Имхо, перенос должен быть в т.ч. в настройках задачи, т.е. при её редактировании должна быть возможность перенести её в любую ветвь иерархии.
3. Мы купили эту версию в первой половине 2009 года, т.е. далеко не в бог знает какие времена.
1) Если глюки повторяются, то обычно исправляем все в течение 1-2 недель, список известных багов в 3.5.77 сейчас практически пустой.
2) Перенос через редактирование задачи был в TrackStudio 3.0, потом от него отказались из-за непонимания со стороны пользователей назначения этого поля. Перенос задачи — это действие, поэтому пользователи ожидали увидеть какую-нибудь кнопку/менюшку, а не просто поле выбора новой родительской задачи. Кроме того, часто нужно переносить множества задач по условиям фильтрации (например, «все открытые задачи переносим в новую версию»), через редактирование свойств задачи это тоже трудно сделать.
2) Перенос через редактирование задачи был в TrackStudio 3.0, потом от него отказались из-за непонимания со стороны пользователей назначения этого поля. Перенос задачи — это действие, поэтому пользователи ожидали увидеть какую-нибудь кнопку/менюшку, а не просто поле выбора новой родительской задачи. Кроме того, часто нужно переносить множества задач по условиям фильтрации (например, «все открытые задачи переносим в новую версию»), через редактирование свойств задачи это тоже трудно сделать.
Мне тоже интересно :-)
Спасибо, ушло в избранное.
В самом начале только поправьте, пожалуйста: можно организовать удобную процесс разработки…
В самом начале только поправьте, пожалуйста: можно организовать удобную процесс разработки…
Sign up to leave a comment.
Git + TrackStudio — автоматизация разработки