function recursive_loop(parent, text) {
if (text) {
var c = parent.children;
for (let i = 0; i < c.length; i++) {
var t = c[i].getElementsByTagName('a')[0].textContent;
if (c[i].getElementsByTagName('ul').length) {
return recursive_loop(c[i].getElementsByTagName('ul')[0], text + '/' + t);
}else{
console.log(text + '/' + t);
}
}
}
}
var parent = document.getElementById('1');
var c = parent.children;
for (let i = 0; i < c.length; i++) {
var text = c[i].getElementsByTagName('a')[0].textContent;
if (c[i].getElementsByTagName('ul').length) {
recursive_loop(c[i].getElementsByTagName('ul')[0], text);
}else{
console.log(text);
}
}
recursive_loop(parent);
Я думаю, что проблема состоит в том, что Вы и Ваш тестирующий менеджер говорите о двух разных вещах. Версии блока являются большими для блоков, но Ваш менеджер по тесту говорит о высокоуровневой версии, "версии системы", если Вы будете. По крайней мере это - мое чтение Вашего сообщения.
То, что необходимо сделать в таких ситуациях, является картой все различные блоки компонента в версию системы. Вы говорите, что что-то вроде "Версии 1.5 системы состоит из Foo.Bar.dll v1.4.6 и Baz.Qux.dll v2.6.7 и (и т.д.)".. Черт, в распределенной системе можно хотеть различные версии для каждого из сервисов, который май в и себя, состоять из различных версий .dlls. Вы могли бы сказать, например: "Версия 1.5 системы состоит из сервиса Foo v1.3, который состоит из Foo.dll v1.9.3 и Bar.dll v1.6.9 и Обслуживания в баре v1.9, который состоит из Baz.dll v1.8.2 и Qux.dll v1.5.2 и (и т.д.)"..
Выполнение материала как это обычно является заданием архитектора программного обеспечения и/или менеджера по сборке в Вашей организации.
Существует много инструментов, которые можно использовать для обработки этой проблемы, которые не имеют никакого отношения предпочтительному языку. Моим любимым в настоящее время является Jira, который, в дополнение к отслеживанию ошибок, имеет большое управление версиями продукта и поддержку roadmapping.
Мог бы хотеть взглянуть на эту страницу, которая объясняет некоторые способы интегрировать последовательное управление версиями в Ваш процесс сборки.
Существует много разных вещей, которые способствуют проблеме. Прочь вершины моей головы, вот та:
Одно из преимуществ распределенной архитектуры - то, что мы получаем огромный потенциал для повторного использования путем создания сервисов и публикации их интерфейсов в некоторой форме или другом. То, что это затем означает, - то, что выпуски клиентского приложения не обязательно тесно синхронизируются с выпусками базовых сервисов. Так, новая версия бизнес-приложения может быть выпущена, который использует ту же старую надежную передачу, которую она использовала в течение года. Как мы затем применим единственный тег версии в этом случае?
Тем не менее, это - справедливый вопрос, но тот, который требует, чтобы нетривиальный ответ был значим.
Не используя основанную на сборке нумерацию версии ни для чего кроме внутренних ссылок. Когда менеджер UAT задает вопрос, Вы говорите "пятницу*".
Единственный прием затем должен удостовериться, маркировав, происходит надежно в Вашем управлении исходным кодом.
* вставляют соответствующую метку даты/маркировку здесь
Мы используем.NET и Подверсию. Все наши блоки приложения совместно используют номер версии, который получен из вручную обновленного главного и незначительного пересмотра числа и число пересмотра Подверсии (<major>.<minor>.<revision>
). У нас есть задача перед сборкой, которая обновляет этот номер версии в общем файле AssemblyVersionInfo.vb. Затем, когда тестеры просят номер версии, мы можем или дать им полный 3 номера детали или просто пересмотр подверсии. Библиотеки, которые мы используем, не изменяются, или изменение не относится к тестеру.