{"action":"created","issue":{"url":"https://api.github.com/repos/skanev/evans/issues/174","repository_url":"https://api.github.com/repos/skanev/evans","labels_url":"https://api.github.com/repos/skanev/evans/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/skanev/evans/issues/174/comments","events_url":"https://api.github.com/repos/skanev/evans/issues/174/events","html_url":"https://github.com/skanev/evans/pull/174","id":171510278,"number":174,"title":"Inline коментари и diff на ревизии","user":{"login":"stormbreakerbg","id":756418,"avatar_url":"https://avatars.githubusercontent.com/u/756418?v=3","gravatar_id":"","url":"https://api.github.com/users/stormbreakerbg","html_url":"https://github.com/stormbreakerbg","followers_url":"https://api.github.com/users/stormbreakerbg/followers","following_url":"https://api.github.com/users/stormbreakerbg/following{/other_user}","gists_url":"https://api.github.com/users/stormbreakerbg/gists{/gist_id}","starred_url":"https://api.github.com/users/stormbreakerbg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stormbreakerbg/subscriptions","organizations_url":"https://api.github.com/users/stormbreakerbg/orgs","repos_url":"https://api.github.com/users/stormbreakerbg/repos","events_url":"https://api.github.com/users/stormbreakerbg/events{/privacy}","received_events_url":"https://api.github.com/users/stormbreakerbg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-08-16T20:32:04Z","updated_at":"2016-08-16T20:36:33Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/skanev/evans/pulls/174","html_url":"https://github.com/skanev/evans/pull/174","diff_url":"https://github.com/skanev/evans/pull/174.diff","patch_url":"https://github.com/skanev/evans/pull/174.patch"},"body":"Този PR добавя inline коментари по решенията и ревизиите на задачи. Също така, ревизиите вече се визуализират като diff.\r\n\r\n---\r\n\r\nВинаги ми се е искало да мога да коментирам решения на задачи както в GitHub. В момента трябва всички коментари по кода да ги напиша в едно поле наведнъж. Става едно изреждане, при което във всяка точка трябва да има и контекст - за кой ред се отнася. После, ако човекът реши да отговори по някакъв начин пак трябва да го прави точка по точка, обяснявайки за кое точно се отнася отговорът.\r\n\r\nОсвен това, ревизиите са доста полезни, но при по-големите задачи се изисква повече умствено натоварване, за да се забележат всички разлики. Комбинирано с глобалния коментар е трудно да се разбере кои от проблемите са оправени и кои - не.\r\n\r\n---\r\n\r\nКоментарите и diff-ването са в един PR, защото си взаимодействат добре и ги направих почти заедно. Работят по следния начин:\r\n- Inline коментар може да се сложи както на решението, така и на всяка една от ревизиите.\r\n- Коментар на ревизия може да се сложи на всеки ред от diff-а, с изключение на изтритите редове. Те могат да се коментират в предходната ревизия.\r\n- Ако конкретен ред от `ревизия X` не е променен в следващите ревизии, то коментарът от `ревизия X` ще бъде видим във финалното решение. Ако редът е променен (изтрит) - коментарът ще изчезне.\r\n- Коментари от предходни ревизии не се виждат в diff-а на следващите ревизии, дори редовете на коментарите да не са променени. Това е за да се спести място и постоянно повтаряне на коментарите.\r\n\r\n---\r\n\r\nЕто видео как изглежда цялото нещо: [видео](http://screencasts.gangelov.net/evans-inline-comments)\r\n\r\n---\r\n\r\nМалко неща по кода:\r\n- Използвал съм минимално количество JavaScript - всичко се генерира на сървъра. JS се ползва само за показване/скриване на формата за коментарите.\r\n- Inline коментар е обикновен коментар с `line_number != nil`.\r\n- Разширих идеята за `SolutionHistory` - `Solutions::History` и `Solutions::Revision`. Второто освен ревизия съдържа и знание за предходната ревизия. Това е необходимо за прехвърлянето на коментарите и diff-ът.\r\n- Изнесох малко общи CSS-и за бутоните. Имам готов PR с доста стилови подобрения, но предпочитам да изчакам резултата от този преди да го пусна.\r\n- Оправих малко N+1 зареждане на неща, свързано с коментарите и ревизиите.\r\n\r\nЩе се радвам на коментари когато на някой му се отвори време да ревюира. Не е спешно, но като влезе този ще има и 1-2 други PR-и, които е добре да изчакат този, та колкото по-рано - толкова по-рано. :)\r\n\r\nCommit-ите са малко наливно и първият е правен преди 5 месеца, та може би не е добра идея да се ревюира commit-по-commit, или поне първите два да са заедно. Ако искате ще ги squash-на.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/skanev/evans/174)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/skanev/evans/issues/comments/240230056","html_url":"https://github.com/skanev/evans/pull/174#issuecomment-240230056","issue_url":"https://api.github.com/repos/skanev/evans/issues/174","id":240230056,"user":{"login":"coveralls","id":2354108,"avatar_url":"https://avatars.githubusercontent.com/u/2354108?v=3","gravatar_id":"","url":"https://api.github.com/users/coveralls","html_url":"https://github.com/coveralls","followers_url":"https://api.github.com/users/coveralls/followers","following_url":"https://api.github.com/users/coveralls/following{/other_user}","gists_url":"https://api.github.com/users/coveralls/gists{/gist_id}","starred_url":"https://api.github.com/users/coveralls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coveralls/subscriptions","organizations_url":"https://api.github.com/users/coveralls/orgs","repos_url":"https://api.github.com/users/coveralls/repos","events_url":"https://api.github.com/users/coveralls/events{/privacy}","received_events_url":"https://api.github.com/users/coveralls/received_events","type":"User","site_admin":false},"created_at":"2016-08-16T20:36:33Z","updated_at":"2016-08-16T20:36:33Z","body":"\n[![Coverage Status](https://coveralls.io/builds/7475820/badge)](https://coveralls.io/builds/7475820)\n\nCoverage decreased (-0.1%) to 99.729% when pulling **770b2269ccfaec410af69c73dc552c19a15e22be on stormbreakerbg:inline-comments** into **98d53944863c17ddccca3929a7cd5cd95f248b87 on skanev:master**.\n"}}
{"actor":{"display_login":"coveralls"}}