button('hey')
вызывает функцию, а не устанавливает ее как обратный вызов.
Можно сделать то, что Вы описываете как это:
Перемещение содержание ABC
к ABC/
подкаталог, и исправляет историю так, чтобы было похоже, что это всегда было там:
$ cd /path/to/ABC
$ git filter-branch --index-filter \
'git ls-files -s | sed "s-\t-&ABC/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
Теперь Ваша структура каталогов ABC/ABC/your_code
То же для содержания DEF
:
$ cd /path/to/DEF
$ git filter-branch --index-filter \
'git ls-files -s | sed "s-\t-&DEF/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
Теперь Ваша структура каталогов DEF/DEF/your_code
Наконец, создайте PPP
репозиторий и вытяните и ABC
и DEF
в него:
$ mkdir /path/to/PPP
$ cd /path/to/PPP
$ git init
$ git pull /path/to/ABC
$ git pull /path/to/DEF
Теперь Вы имеете PPP/ABC/your_code
и PPP/DEF/your_code
, наряду со всей историей.
необходимо, вероятно, попросить, чтобы Вы коллеги выполнили предыдущие команды в их системе для всех, чтобы синхронизироваться.
Примечание: броское
filter-branch
команды прибывают из страницы справочника .:-)
Для меня кажется трудным сделать способ, которым Вы хотите это, потому что история обоих проектов не объединится.
Мой лучший совет состоял бы в том, чтобы создать новый репозиторий для содержания ABC и DEF, сохранение старого repo от этих двух, чтобы иметь историю копирует и запускает новую историю с этого нового проекта.
возвращение -1 почти так же ужасно, как выброс исключения. Правильный способ - использовать тип опции, если язык лучше поддерживает его. В нормальной ситуации, когда есть результат, вы помещаете результат в объект и возвращаете его. В противном случае вы возвращаете объект, представляющий ситуацию "не результат".
На сайте вызова вы должны проверить, какой из них был; вы не можете просто использовать возвращаемое значение из-за их супертипа, они должны быть проверены с помощью сопоставления с образцом.
В псевдосинтаксисе:
class Option[a] = Some[a] | None,
где a - параметр универсального типа, Some представляет результат со значением и None non -result без значения.
в индексе В случае, если у вас будет:
Option[Integer] indexOf(char c) = {
if(found) return Some(index)
else return None
}
, и вы используете это следующим образом:
result = "uncle".indexOf('c')
result match {
Some(i) => System.out.println("index was: " + i);
None => System.out.println("no value");
}
Если вы пропустили какой-либо или None из сопоставления (что является своего рода обобщенным переключателем), компилятор выдаст вам предупреждение.
грамм. загрузить оба сразу, проверочные состояния заведомо исправные для обоих и т. д.Использование подмодулей позволит избежать проблем с существующими копиями репозиториев, поскольку история не меняется. Их объединение создаст новую историю, и людям, работающим из существующих веток, будет сложнее объединить свои изменения.