Skip to content

Commit

Permalink
added Latte\CompileException: Modifiers are not allowed here
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Oct 12, 2015
1 parent 814c910 commit 89ae5db
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 5 deletions.
15 changes: 13 additions & 2 deletions src/Latte/Macros/BlockMacros.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,13 @@ public function macroInclude(MacroNode $node, PhpWriter $writer)
*/
public function macroIncludeBlock(MacroNode $node, PhpWriter $writer)
{
return $writer->write('ob_start(); $_b->templates[%var]->renderChildTemplate(%node.word, %node.array? + get_defined_vars()); echo rtrim(ob_get_clean())',
$this->getCompiler()->getTemplateId());
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
return $writer->write(
'ob_start(); $_b->templates[%var]->renderChildTemplate(%node.word, %node.array? + get_defined_vars()); echo rtrim(ob_get_clean())',
$this->getCompiler()->getTemplateId()
);
}


Expand All @@ -149,6 +154,9 @@ public function macroIncludeBlock(MacroNode $node, PhpWriter $writer)
*/
public function macroExtends(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
if (!$node->args) {
throw new CompileException("Missing destination in {{$node->name}}");
}
Expand Down Expand Up @@ -306,6 +314,9 @@ public function macroBlockEnd(MacroNode $node, PhpWriter $writer)
*/
public function macroIfset(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
if (!preg_match('~#|[\w-]+\z~A', $node->args)) {
return FALSE;
}
Expand Down
30 changes: 30 additions & 0 deletions src/Latte/Macros/CoreMacros.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ public function finalize()
*/
public function macroIf(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
if ($node->data->capture = ($node->args === '')) {
return 'ob_start()';
}
Expand Down Expand Up @@ -139,6 +142,9 @@ public function macroEndIf(MacroNode $node, PhpWriter $writer)
*/
public function macroElse(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
$ifNode = $node->parentNode;
if ($ifNode && $ifNode->name === 'if' && $ifNode->data->capture) {
if (isset($ifNode->data->else)) {
Expand Down Expand Up @@ -219,6 +225,9 @@ public function macroInclude(MacroNode $node, PhpWriter $writer)
*/
public function macroUse(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
call_user_func(Latte\Helpers::checkCallback([$node->tokenizer->fetchWord(), 'install']), $this->getCompiler())
->initialize();
}
Expand Down Expand Up @@ -252,6 +261,9 @@ public function macroCaptureEnd(MacroNode $node, PhpWriter $writer)
*/
public function macroEndForeach(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers && $node->modifiers !== '|noiterator') {
throw new CompileException('Only modifier |noiterator is allowed here.');
}
if ($node->modifiers !== '|noiterator' && preg_match('#\W(\$iterator|include|require|get_defined_vars)\W#', $this->getCompiler()->expandTokens($node->content))) {
$node->openingCode = '<?php $iterations = 0; foreach ($iterator = $_l->its[] = new Latte\Runtime\CachingIterator('
. preg_replace('#(.*)\s+as\s+#i', '$1) as ', $writer->formatArgs(), 1) . ') { ?>';
Expand All @@ -269,6 +281,9 @@ public function macroEndForeach(MacroNode $node, PhpWriter $writer)
*/
public function macroBreakContinueIf(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
$cmd = str_replace('If', '', $node->name);
if ($node->parentNode && $node->parentNode->prefix === $node::PREFIX_NONE) {
return $writer->write("if (%node.args) { echo \"</{$node->parentNode->htmlNode->name}>\\n\"; $cmd; }");
Expand Down Expand Up @@ -303,6 +318,9 @@ public function macroAttr(MacroNode $node, PhpWriter $writer)
*/
public function macroDump(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
$args = $writer->formatArgs();
return $writer->write(
'Tracy\Debugger::barDump(' . ($args ? "($args)" : 'get_defined_vars()'). ', %var)',
Expand All @@ -316,6 +334,9 @@ public function macroDump(MacroNode $node, PhpWriter $writer)
*/
public function macroDebugbreak(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
return $writer->write(($node->args == NULL ? '' : 'if (!(%node.args)); else')
. 'if (function_exists("debugbreak")) debugbreak(); elseif (function_exists("xdebug_break")) xdebug_break()');
}
Expand All @@ -327,6 +348,9 @@ public function macroDebugbreak(MacroNode $node, PhpWriter $writer)
*/
public function macroVar(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
if ($node->args === '' && $node->parentNode && $node->parentNode->name === 'switch') {
return '} else {';
}
Expand Down Expand Up @@ -384,6 +408,9 @@ public function macroExpr(MacroNode $node, PhpWriter $writer)
*/
public function macroContentType(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
if (strpos($node->args, 'xhtml') !== FALSE) {
$this->getCompiler()->setContentType(Latte\Compiler::CONTENT_XHTML);

Expand Down Expand Up @@ -418,6 +445,9 @@ public function macroContentType(MacroNode $node, PhpWriter $writer)
*/
public function macroStatus(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
throw new CompileException('Modifiers are not allowed here.');
}
return $writer->write((substr($node->args, -1) === '?' ? 'if (!headers_sent()) ' : '') .
'header((isset($_SERVER["SERVER_PROTOCOL"]) ? $_SERVER["SERVER_PROTOCOL"] : "HTTP/1.1") . " " . %0.var, TRUE, %0.var)', (int) $node->args
);
Expand Down
8 changes: 8 additions & 0 deletions src/Latte/Macros/MacroSet.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ public function nodeOpened(MacroNode $node)
list($begin, $end, $attr) = $this->macros[$node->name];
$node->isEmpty = !$end;

if ($node->modifiers
&& (!$begin || (is_string($begin) && strpos($begin, '%modify') === FALSE))
&& (!$end || (is_string($end) && strpos($end, '%modify') === FALSE))
&& (!$attr || (is_string($attr) && strpos($attr, '%modify') === FALSE))
) {
throw new Latte\CompileException('Modifiers are not allowed here.');
}

if ($attr && $node->prefix === $node::PREFIX_NONE) {
$node->isEmpty = TRUE;
$this->compiler->setContext(Latte\Compiler::CONTEXT_DOUBLE_QUOTED_ATTR);
Expand Down
5 changes: 4 additions & 1 deletion tests/Latte/CoreMacros.foreach.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@ function expandMacro($compiler, $args, $modifiers = NULL) {

Assert::same($prefix . '$array) as $value) { ?>', expandMacro($compiler, '$array as $value')->openingCode);
Assert::same($prefix . '$array) as $key => $value) { ?>', expandMacro($compiler, '$array as $key => $value')->openingCode);
Assert::same($prefix . '$array) as $value) { ?>', expandMacro($compiler, '$array as $value', '|filter')->openingCode); // ignored

Assert::same($prefix . '$obj->data("A as B")) as $value) { ?>', expandMacro($compiler, '$obj->data("A as B") as $value')->openingCode);
Assert::same($prefix . '$obj->data(\'A as B\')) as $value) { ?>', expandMacro($compiler, '$obj->data(\'A as B\') as $value')->openingCode);
Assert::same($prefix . '$obj->data("X as Y, Z as W")) as $value) { ?>', expandMacro($compiler, '$obj->data("X as Y, Z as W") as $value')->openingCode);

Assert::same('<?php $iterations = 0; foreach ($array as $value) { ?>', expandMacro($compiler, '$array as $value', '|noiterator')->openingCode);

Assert::exception(function () use ($compiler) {
expandMacro($compiler, '$array as $value', '|filter');
}, Latte\CompileException::class, 'Only modifier |noiterator is allowed here.');
8 changes: 8 additions & 0 deletions tests/Latte/CoreMacros.if.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,11 @@ CoreMacros::install($compiler);

Assert::same('<?php if (isset($var)) { ?>', $compiler->expandMacro('ifset', '$var')->openingCode);
Assert::same('<?php if (isset($item->var["test"])) { ?>', $compiler->expandMacro('ifset', '$item->var["test"]')->openingCode);

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('if', '$var', '|filter');
}, Latte\CompileException::class, 'Modifiers are not allowed here.');

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('ifset', '$var', '|filter');
}, Latte\CompileException::class, 'Modifiers are not allowed here.');
10 changes: 8 additions & 2 deletions tests/Latte/CoreMacros.var.default.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@ test(function () use ($compiler) { // {var ... }
Assert::same('<?php $var = \'hello\'; $var2 = \'world\' ?>', $compiler->expandMacro('var', 'var => hello, var2 = world', '')->openingCode);
Assert::same('<?php $var = 123 ?>', $compiler->expandMacro('var', '$var => 123', '')->openingCode);
Assert::same('<?php $var = 123 ?>', $compiler->expandMacro('var', '$var = 123', '')->openingCode);
Assert::same('<?php $var = 123 ?>', $compiler->expandMacro('var', '$var => 123', 'filter')->openingCode);
Assert::same('<?php $var1 = 123; $var2 = "nette framework" ?>', $compiler->expandMacro('var', 'var1 = 123, $var2 => "nette framework"', '')->openingCode);
Assert::same('<?php $temp->var1 = 123 ?>', $compiler->expandMacro('var', '$temp->var1 = 123', '')->openingCode);

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('var', '$var => "123', '');
}, Latte\CompileException::class, 'Unexpected %a% on line 1, column 9.');

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('var', '$var => 123', '|filter');
}, Latte\CompileException::class, 'Modifiers are not allowed here.');
});


Expand All @@ -35,10 +38,13 @@ test(function () use ($compiler) { // {default ...}
Assert::same("<?php extract(['var' => 'hello'], EXTR_SKIP) ?>", $compiler->expandMacro('default', 'var => hello', '')->openingCode);
Assert::same("<?php extract(['var' => 123], EXTR_SKIP) ?>", $compiler->expandMacro('default', '$var => 123', '')->openingCode);
Assert::same("<?php extract(['var' => 123], EXTR_SKIP) ?>", $compiler->expandMacro('default', '$var = 123', '')->openingCode);
Assert::same("<?php extract(['var' => 123], EXTR_SKIP) ?>", $compiler->expandMacro('default', '$var => 123', 'filter')->openingCode);
Assert::same("<?php extract(['var1' => 123, 'var2' => \"nette framework\"], EXTR_SKIP) ?>", $compiler->expandMacro('default', 'var1 = 123, $var2 => "nette framework"', '')->openingCode);

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('default', '$temp->var1 = 123', '');
}, Latte\CompileException::class, "Unexpected '->' in {default \$temp->var1 = 123}");

Assert::exception(function () use ($compiler) {
$compiler->expandMacro('default', '$var => 123', '|filter');
}, Latte\CompileException::class, 'Modifiers are not allowed here.');
});
36 changes: 36 additions & 0 deletions tests/Latte/MacroSet.basic.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,39 @@ test(function () use ($set) {
$node = new MacroNode($set, 'reject');
Assert::false($set->nodeOpened($node));
});


test(function () use ($set) {
$set->addMacro('modifyOk1', function () {});
$set->nodeOpened(new MacroNode($set, 'modifyOk1', NULL, '|filter'));

$set->addMacro('modifyOk2', NULL, function () {});
$set->nodeOpened(new MacroNode($set, 'modifyOk2', NULL, '|filter'));

$set->addMacro('modifyOk3', NULL, NULL, function () {});
$set->nodeOpened(new MacroNode($set, 'modifyOk3', NULL, '|filter'));

$set->addMacro('modifyOk4', function () {}, '-');
$set->nodeOpened(new MacroNode($set, 'modifyOk4', NULL, '|filter'));

$set->addMacro('modifyOk5', '-', function () {});
$set->nodeOpened(new MacroNode($set, 'modifyOk5', NULL, '|filter'));

$set->addMacro('modifyOk6', '-', '-', function () {});
$set->nodeOpened(new MacroNode($set, 'modifyOk6', NULL, '|filter'));

Assert::exception(function () use ($set) {
$set->addMacro('modifyError1', '-');
$set->nodeOpened(new MacroNode($set, 'modifyError1', NULL, '|filter'));
}, Latte\CompileException::class, 'Modifiers are not allowed here.');

Assert::exception(function () use ($set) {
$set->addMacro('modifyError2', NULL, '-');
$set->nodeOpened(new MacroNode($set, 'modifyError2', NULL, '|filter'));
}, Latte\CompileException::class, 'Modifiers are not allowed here.');

Assert::exception(function () use ($set) {
$set->addMacro('modifyError3', NULL, NULL, '-');
$set->nodeOpened(new MacroNode($set, 'modifyError3', NULL, '|filter'));
}, Latte\CompileException::class, 'Modifiers are not allowed here.');
});

24 comments on commit 89ae5db

@thaeriac
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for another BC break released in 2.3.5 version! 😠

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 12, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why BC break?

@thaeriac
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will crash for no reason.
With message "Modifiers are not allowed here.". Why? Where? Wat is problem? .....

<a target="_blank" href="{if !empty($url)}{$url}{else}www.seznam.cz{/if}">url</a>

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 12, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That was not intention, I'll send fix.

Edit: fixed in Latte 2.3.6

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 12, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the precise reason why not put new features into X.Y.* version. There are untested and you will never know if you didn't break anything. Such report would came from master, maybe few days later, but it would be safe to upgrade. Dou you see and agree that this cause serious problems?

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 12, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mistakes happen. Rarely.

@Majkl578
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hrach 👍

Not only it introduces BC breaks (and rarely is good enough reason to not do it), it also makes it much harder to mantain documentation for stable versions (assuming that someone is actually documenting it)...

@thaeriac
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dg THX.

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Majkl578 @hrach Who does nothing, can't do anything wrong.

I just tried to fix https://forum.nette.org/cs/22402-nejvetsi-zaseky-v-nette-drobnosti-na-kterych-se-da-viset-i-nekolik-hodin. Nobody cares, I tried it. This is not feature. This is not BC break. I made a mistake, which at maximum can result in few warnings on production when template is compiled. Then I fixed it.

Vaše kecy mám u prdele.

@ne0-cz
Copy link

@ne0-cz ne0-cz commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dg: could you edit your last post to include /--abusive? As someone pointed out in Nette forum, it could greatly improve motivation in the community https://forum.nette.org/cs/24090-budte-mili-napomocni-a-konstruktivni#p161568

The guy who wrote that forum post actually has the same avatar as you! And even the initials make it look like you're the same person. Uncanny.

This is "komunita nadšených lidí, kteří se navzájem povzbuzovali" at its best!

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ne0-cz tomu ty říkáš nadšené povzbuzování? Když jediné, co slyším, je jaxem to zase posral?

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the last 2 weeks, you broke three things in stable version:

Sorry to disappoint you by pointing these things out, but it seems it STILL doesn't bother you at all.
I don't mind you are breaking your own code of conduct, but please, stop hurting the framework users.

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a big difference between pointing out and bullshiting.

Not only it introduces BC breaks, it also makes it much harder to mantain documentation for stable versions.

This is just normal bullshit. In addition, you know very well that nobody writes documentation.

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quoting others people without proper copy-past is quite unfair.
Why is it bullshit? The fact, that nobody does it, can't make the statement bullshit.

@fprochazka
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dg I think that a good compromise is to simply open a pullrequest, leave it be for two days and wait if somebody spots any problems.

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you are angry because we are pointing at your mistakes, but please don't get it wrong. We consider such mistakes as TOTALLY NORMAL and usual. That's the reason why it should not go to stable version such early.

@fprochazka I don't think it's enough and it would work well.

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fprochazka its very hard to get someone to test even the beta version. Pull requests are good to talk about implementation, but not for testing.

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hrach přepnu do češtiny. Vůbec neřeším upozorňování na chyby, souhlasím s tím, že do stable by neměla věc jít too early (a připouštím, že to občas dělám). Ale vadí mi blahosklonné rady nebo nafukování situace.

Master nebo 2.3@dev používá naprosté minimum lidí, takže vzácně se projevující chyby, jako je tato (tj. projeví se warningem pokud použiješ if uvnitř href href="{if}..."), se objeví zpravidla teprve po vydání verze. I přesto, že 2.3@dev průběžně provozuji asi na sedmi projektech.

Měsíc to držet v masteru v podobných případech bohužel nepomáhá. Podobně se i ohromná spousta chyb PHP 7 objeví až po vydání PHP 7.0.0. Samozřejmě šanci to nepatrně zvyšuje, jenže na to navazují další věci, takže je potřeba udělat rozhodnutí. A jelikož taková chyba se stává extrémně zřídka, je to asi celkem schůdná cesta.

Co ale situaci fakt nepomáhá, je eskalovat problém, dokonce až k řečem o tom, že to komplikuje udržovat dokumentaci, což je o to divnější, že se ví, že dokumentaci nikdo neudržuje. Pokud po měsíci práce na open source je výstupem pozitivní tvít a negativní komentář na Githubu, tak je to značně demotivující.

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dg vsechno, co pises, je pravda. Ze minimum lidi pouziva 2.3@dev je take pravda, otazka je proc? Ten zasadni rozdil je ale podle me v tom, ze kdyz upraduji na 2.4., tak vim, ze se mi muze neco rozbit (ano, semver to taky nepovoluje, ale je to proste mnohem vetsi skok a v da se na to zvyknout, ze v Nette to nedodrzujem.) Nicmene je podle me velmi dulezite, aby existoval kanal, kde budu dostavat security a jine fixy, ale pravdepodobnost, ze se neco rozbije, bude co nejnizsi. Ty "nase" komentare stale dokola jsou jen o tom, ze si myslime, ze jde vyrazne aktualni pravdepodobnost snizit.

Co se tyka dokumentace, to je proste problem, ktery asi neumime resit. Mne osobne se osvedcilo, ze v nextras orm mam dokumentaci v projektu. Je to opravdu jen muj nejaky mentalni blok, ale po te, co jsem ji dostal do nejakeho stavu, si jiz netroufnu commitnout novou feature bez zdokumentovani: namatkou: nextras/orm@6f424e6, nextras/orm@13cbe5a, nextras/orm@6e67d0c ... To samozrejme ale s sebou taky prinasi, ze tve nove featury si budes muset zdokumentovat sam. Ceske prostredi je asi prilis sobecke, aby nekdo prisel, a udelal dokumentaci k cizi feature. Na druhou stranu takovyto stav umoznuje nemergnout pull-request, ve kterem dana feature zdokumentovana neni. (=u me se tento stav vyvinul jako pocit k testum - mergovat neco bez testu je spatne, commitovat neco bez testu je spatne)

V neposledni rade necommitovani featur do stablu ma dve pozitiva:

  1. vetsi chut upgradovat, abych ziskal nove feature; diky statistice z packagisty pak muzeme videt, jak jednotlive verze jsou realne pouzivany a ciste prakticky pak muze diky rychlejsi migraci dojit k zkraceni udrzovacich cyklu.
  2. lip se to bude dokumentovat. ok, chapu, ze te stve, ze aktualne je tento argument irelevantni, ale to neznamena, ze neni pravdivy, a uz vubec to z nej nedela "bullshiting".

Chapu, ze te sere, ze ti nekdo rika, ze neco ma byt nejak jinak, a pritom nic jineho nedela. Sorry. Na druhou stranu, pochop, ze nas jine zase stve, ze nemuzeme nove verze nette upradovat tak, jak bychom chteli. Proc? Protoze narozdil od tebe vubec nemame tak dobry prehled, co se kde zmenilo, a diky tomu nemuzeme vedet, na co si dat pozor. Malokdo si pri composer update otevre vsechny knihovny, ktere se updatli, a diva se na changelog kazde setinkove verze.

@fprochazka
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Co se týče používání devu, já dlouhé roky fungoval zásadně a pouze na devu. Ovšem je v něm poslední >rok takové množství BC Breaků, že nejsem schopnej stíhat to sledovat a řešit to v naší aplikaci. Rád bych to testoval průběžně, ale prostě to nestíhám :-(

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fprochazka hmm, vím z hlavy jen o dvou:

@dg
Copy link
Member Author

@dg dg commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hrach to asi není na diskusi pod commitem. V podstatě místo verzi 2.1, 2.2 atd mohly vycházet verze 3.0, 4.0 a mít setinkovou granularitu pod security fix, což by vedlo k vydávání více verzí a s tím spojené vyšší režie, což prostě už lidsky nezvládnu.

@hrach
Copy link
Contributor

@hrach hrach commented on 89ae5db Oct 14, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Podle me to nemas delat ty, je to zbytecne prace pro hlavni hlavu projektu. Jiz davno jsem rikal, ze to chce zavest release managera a management:
https://forum.nette.org/cs/16449-dalsi-vyvoj-nette-organizace-rozhodovani-budoucnost#p116306, https://forum.nette.org/cs/16496-jak-to-bude-dal-s-vyvojem-nette-frameworku#p116687. Co si pamatuju, tak kdysi jsme se taky bavili o tom, ze by to Honza Tvrdik delal. Ted jsme nekolik let dal a bojim se, ze on uz nema moznost to delat (cas).

@fprochazka
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dg problém je v tom, že já hodně používám internals nette :) (ale to je v podstatě můj problém).

Please sign in to comment.