Не мог отследить файлы в подмодулях Мерзавца

Для простоты:

// Usage
const intersection = allLists
  .reduce(intersect, allValues)
  .reduce(removeDuplicates, []);


// Implementation
const intersect = (intersection, list) =>
  intersection.filter(item =>
    list.some(x => x === item));

const removeDuplicates = (uniques, item) =>
  uniques.includes(item) ? uniques : uniques.concat(item);


// Example Data
const somePeople = [bob, doug, jill];
const otherPeople = [sarah, bob, jill];
const morePeople = [jack, jill];

const allPeople = [...somePeople, ...otherPeople, ...morePeople];
const allGroups = [somePeople, otherPeople, morePeople];

// Example Usage
const intersection = allGroups
  .reduce(intersect, allPeople)
  .reduce(removeDuplicates, []);

intersection; // [jill]

Преимущества:

  • очень просто
  • для данных
  • работает для произвольного числа списков
  • работает для произвольной длины списков
  • работает для произвольных типов значений
  • работает для произвольного порядка сортировки
  • сохраняет форму (порядок первого появления в любом массиве )
  • выходят рано, где это возможно
  • память безопасна, если не вмешиваться в прототипы функций / массивов

Недостатки:

  • более высокая память использование
  • более высокая загрузка ЦП
  • требует понимания сокращения
  • требует понимания потока данных

Вы не хотели бы использовать это для 3D-движок или ядро ​​работают, но если у вас есть проблемы с его запуском в приложении, основанном на событиях, у вашего дизайна большие проблемы.

50
задан Community 23 May 2017 в 01:55
поделиться

3 ответа

Предложение: пропустите свой код через профилировщик. Тогда вы узнаете, где он медленный. Интуитивно понятно, что OrderBy - самая медленная вещь в этой программе. Но интуиция относительно самой медленной вещи часто очень и очень ошибочна. Используйте профилировщик.

Конечно, вы также должны устранить серьезные недостатки в этой программе. Помните, что Count () подсчитывает последовательность путем ее повторного перечисления. Count () не знает, что вы не меняли последовательность с момента ее последнего подсчета! Вероятно, вы захотите сохранить счетчик, а не пересчитывать его каждый раз, или использовать длину, поскольку у вас есть массив.

На странице руководства указано, что «Если игнорируемый файл явно указан в командной строке, команда завершится ошибкой со списком игнорируемых файлов».

Если файл игнорируется, вы можете заставить его добавляется с помощью ' git add --force full / path / to / file ».

Инструкции по удалению ссылки на подмодуль:

Как отмечалось в предыдущем ответе, shells / smallApps - это подмодуль в вашем репозитории.

Если файл является частью подмодуля, ситуация более сложная. Вы не можете изменять содержимое подмодуля из основного проекта.

Если вы хотите удалить ссылку на подмодуль и напрямую отслеживать файлы в основном репозитории, необходимо выполнить несколько шагов. Вы не можете просто удалить каталог ".git" из подмодуля. Между вашим основным репозиторием и подмодулем есть три ссылки:

  1. Файл .gitmodules в вашем основном репозитории.
  2. Запись в .git / config вашего основного репо.
  3. Любые коммиты, связанные с подмодулем в вашей основной истории репо.

В соответствии с этим вопросом SO , вам необходимо выполнить следующие шаги, чтобы полностью удалить подмодуль:

ПРИМЕЧАНИЕ. Если от этого подмодуля зависит другая ветка, то ее удаление может повредить ваш репозиторий! Это опасная операция ... используйте с осторожностью.

  1. Удалите соответствующую строку из файла .gitmodules .
  2. Удалите соответствующий раздел из .git / config .
  3. Выполните git rm --cached path_to_submodule (без косой черты в конце). Каталог git (находится в корне вашего репо)
  4. Нет каталога .git в editors / vim / vimdoclet
  5. Нет каталога .git в shells / smallApps
100
ответ дан 7 November 2019 в 10:47
поделиться

Я вижу, у вас есть git add , говорящий о подмодулях. У вас есть вложенные репозитории Git? Сделайте следующее:

$ find . -name .git

Сколько каталогов .git перечислено? Если их несколько, значит, у вас несколько вложенных репозиториев, и это может быть причиной некоторой путаницы.

2
ответ дан 7 November 2019 в 10:47
поделиться

Вам следует подумать о том, чтобы отправить этот вопрос в список рассылки Git ( git@vger.kernel.org ). Скорее всего, вы получите более быстрый и полный ответ.

Если вы все же решите разместить там сообщение, обязательно включите:

  • Описание того, чего вы пытаетесь достичь.
  • Описание вашей проблемы.
  • Полный журнал сеанса, показывающий:
    • cd в каталог верхнего уровня в вашем репо
    • ls -al
    • cat .git / config
    • find. -name ".git *"
    • git status
    • git add editors
    • git add shells
    • git status
2
ответ дан 7 November 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: