Обработка нескольких changesets в системах управления исходным кодом

Учитывая структуру вашего HTML-кода, первой попыткой будет следующий CSS (не оптимизированный). Однако, как предполагает @Kerri, в вашем случае было бы лучше использовать flexbox.

.custom-container{
  position: relative;
  height: 300px;
  width: 300px;
}

.text,
.barcode,
.uniq_barcode{
  position: absolute;
}

.text{
 top:0;
 left:0;
 border: 5px solid red;
 height: 300px;
 width: 300px;
 z-index: 1;
}

.barcode,
.uniq_barcode{
  border: 5px solid blue;
  height: 100px;
  width: 100px;
  z-index: 100;
}

.barcode{
  top: 0;
  left: 200px;
 }
.uniq_barcode{
  top: 200px;
  left: 200px;
}

Вы можете проверить код по этой ссылке: https://jsfiddle.net/8vrwto16/1/

10
задан Mike Thompson 16 January 2009 в 06:08
поделиться

7 ответов

Эту точную проблему назвали "Запутанной Рабочей проблемой Копии". У Ryan Tomayko есть запись в блоге, назвал Вещь О Мерзавце, который говорит об этой проблеме подробно и как Мерзавец обращается к ней.

Это - одна из лучших вещей о Мерзавце. Я использую git add -p по крайней мере, ежедневно, чтобы помочь фиксировать отдельные блоки кода, которые имеют смысл друг независимо от друга. То, что два логически различных изменения находятся в том же исходном файле, стало не важным.

7
ответ дан 3 December 2019 в 20:07
поделиться

Я управляю этим с По необходимости путем поддержания нескольких рабочих областей с начала. Моя основная разработка находится на магистрали (где новая разработка происходит), в то время как другой указывает на ответвление выпущенного кода. Если я должен исправить ошибку, я перехожу к ответвлению выпуска.

Я не уверен, работало ли это на Вас, но по крайней мере Вы не должны были бы создавать новую рабочую область каждый раз, когда Вы исправляете ошибку (так как это уже было бы там).

3
ответ дан 3 December 2019 в 20:07
поделиться

ClearCase поддерживает также changelist (названный "действием" в его разновидности UCM) и представляет собой подобную проблему.

Опция 1 ("вид ответвления") имеет смысл только, когда Вы решаете, что "усилие по отладке" не является совместимым с текущим усилием по разработке (почтовая функция) и является содержащимся в полном порядке в отдельном ответвлении. Затем можно модифицировать любое исправление, сделанное в ответвлении "патча" к основному ответвлению (так как не каждая ошибка, которую Вы исправите, должна присутствовать в обоих: текущая разработка может иметь, представляют некоторые устаревшие меры).
См. также, "Что является ответвлением", и что является Вашим рабочим процессом слияния.

Опция 3 является иллюстрацией предела понятия changeset: единственный пересмотр (или "версия") файла может только быть частью одного changeset за один раз.

git add -p (добавьте патч), упомянутый Greg чередование к Опции 1 и 3, так как это использует в своих интересах функцию подготовки "Индекса" (Район сосредоточения войск), зона, в которой Вы решаете то, что будет на самом деле фиксироваться, и что останется в Вашем личном пространстве.
Это хорошо, но также и по моему опыту довольно трудно выдержать на длительном промежутке времени, особенно на едином наборе файлов, на которые Вы применяете две различных эволюции. Ответвление является более чистым, более простым к модульному тесту. Однако для маленькой фиксации как Вы упоминание, это мог быть хороший выход.

Опция 2 является практическим решением, когда Вы понимаете, что у Вас есть два изменения для двух различных усилий (которые все еще совместимы, которые не "повреждают" друг друга).
Но может быть ровное простое решение, был бы только к:

  • регистрация текущее состояние main.h в электронном письме,
  • контроль в ошибке, зафиксируйте его, регистрация в ошибке
  • и затем контроль в электронном письме для возобновления почтовой разработки комплекта.

Снова, если два усилия по разработке (электронная почта и ошибка) совместимы, у Вас может быть история пересмотра со смешанными операциями.

2
ответ дан 3 December 2019 в 20:07
поделиться

Мы используем задания так, чтобы единственная 'задача' могла охватить, несколько фиксировали changesets.

Поэтому:

  1. Проверьте, что изменения main.h независимы от других изменений
  2. Текущее состояние регистрации main.h - под долгосрочным почтовым заданием
  3. Сделайте исправление ошибки к main.h
  4. Исправление ошибки регистрации changeset
  5. Отредактируйте main.h под почтовым заданием при необходимости
2
ответ дан 3 December 2019 в 20:07
поделиться

Вы не упоминали опцию 4, которая должна создать ответвления.

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

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

Наконец у Вас есть свое ответвление исправления ошибки. Это - то, где Вы делаете все свои незначительные редактирования и срочные исправления ошибок. После того как они были протестированы, они интегрируются в основную строку кода для QA и выпуска (который должен быть на отдельном ответвлении). Эти редактирования могут затем быть интегрированы от основной строки в Вашу строку разработки так, чтобы Вы всегда работали над последним кодом. Эта интеграция может произойти в то время, когда Вы выбираете - так, чтобы можно было быть уверены, что она не собирается вызывать любые проблемы в новом коде.

Это - (IMO) лучшее решение.

2
ответ дан 3 December 2019 в 20:07
поделиться

Для По необходимости, можно использовать инструмент как p4 tar:

http://public.perforce.com/wiki/P4tar

Это позволяет Вам сохранить и вернуться свой текущий changelist, сделать фиксацию и затем восстановить свою работу. Необходимо было бы все еще интегрировать изменения в main.h, но он делает задачу намного легче.

1
ответ дан 3 December 2019 в 20:07
поделиться

Я согласен с ChrisF : разветвление было бы наиболее естественным решением для этого.

Я использовал Perforce некоторое время, и это правда, что это не так сильны в ветвлении, как и другие SCM, но это можно сделать.

Хитрость очень проста: создайте ветвь для каждой задачи, над которой вы работаете (god-ol ветвь для шаблона задачи ), переключитесь на него. Что делать, если вам нужно исправить что-то еще? Легко, просто переключитесь на другую ветку после проверки всего (с некоторыми scms вам даже не нужно регистрироваться), исправьте это и вернитесь позже к своей исходной "электронной" ветке.

1
ответ дан 3 December 2019 в 20:07
поделиться
Другие вопросы по тегам:

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