Я был по всему Google и ТАК искал кого-то, кто задал этот вопрос, но я выхожу совершенно пустым. Я заранее извиняюсь за длительный обходной способ задать вопрос. (Если бы мне удалось выяснить, как решить проблему, возможно, мне удалось бы найти ответ.)
Как управлять большими проектами в Mercurial, , когда в процессе сборки / компиляции создаются сотни временных файлов для создания конечного результата ?? Является ли .hgignore
только ответ?
Пример сценария:
У вас есть проект, который хочет использовать какой-то пакет с открытым исходным кодом для какой-либо функции и должен скомпилировать из исходного кода. Итак, вы идете за пакетом. un-.tgz, а затем поместите его в свой собственный репозиторий Mercurial, чтобы вы могли начать отслеживать изменения. Затем вы вносите все свои изменения и запускаете сборку.
Вы проверяете свой конечный результат, довольны результатами и готовы отправить обратно в локальный клон репозитория. Таким образом, вы делаете hg status
, чтобы проверить свои изменения перед фиксацией. Результаты hg status
заставляют вас немедленно начать использовать все те слова, которые могли бы стыдить вашу мать - потому что теперь у вас есть экраны и экраны "build cruft".
Ради аргумента скажем, что этот пакет - MySQL или Apache: то, что
- вы не контролируете и будете регулярно меняться,
- оставляет много беспорядка во многих местах, а
- нет никакой гарантии, что фракция не изменится каждый раз, когда вы получаете новую версию из внешнего источника.
Ух ты что? Над конкретным проектом, вызывающим эту тревогу, будут работать несколько разработчиков в нескольких физических местах, и поэтому он должен быть максимально простым. Если будет слишком много вовлеченных, они не собираются это делать, и у нас будет большая проблема в наших руках. (К сожалению, некоторые старые собаки не заинтересованы в изучении новых трюков ...)
Одно из предложенных решений состояло в том, что им нужно было бы просто зафиксировать все локально, прежде чем делать сборку, поэтому у них есть «чистый лист», который они затем должны будут клонировать, чтобы фактически выполнить сборку. ) слишком много шагов и (б) нежелание ломать историю с кучей изменений «пора строить сейчас».
Кто-то еще предложил, чтобы вся добыча была просто передана в хранилище Mercurial. Я категорически против этого, потому что в следующий раз эти файлы станут «измененными» и, следовательно, будут включены в список файлов ревизии.
Мы не можем быть единственными, кто столкнулся с этой проблемой. Так что же такое «правильное» решение? Являемся ли мы единственным средством, чтобы попытаться создать чрезвычайно интеллектуальный файл .hginore
? Это вызывает у меня беспокойство, потому что если я скажу Mercurial «игнорировать все в этом каталоге, о котором я вам еще не говорил», то что произойдет, если следующий примененный патч добавит файлы в этот игнорируемый каталог? (Mercurial никогда не увидит этот новый файл, верно?)
Надеюсь, это не совсем глупый вопрос с очевидным ответом. Я много раз собирал исходники, но мне никогда не приходилось применять контроль версий. Кроме того, мы новичок в Mercurial.