Если вы хотите, чтобы Textview был обязательным или необязательным, как я. Смотрите мой хак
func textViewDidBeginEditing(textView: UITextView) {
if textView.text.isEmpty {
if self.text == "Required" || self.text == "Optional" {
dispatch_async(dispatch_get_main_queue(), {
textView.selectedRange = NSMakeRange(0, 0)
});
}
}
}
func textViewDidEndEditing(textView: UITextView) {
if CommonUtils.isEmptyString(textView.text) {
if required {
textView.text = "Required"
} else {
textView.text = "Optional"
}
textView.textColor = grayColor//
}
}
func textViewDidChange(textView: UITextView) {
if textView.text.isEmpty {
if required {
textView.text = "Required"
} else {
textView.text = "Optional"
}
textView.textColor = grayColor
textView.selectedRange = NSMakeRange(0, 0)
} else {
if required {
if textView.text.length > "Required".length {
textView.text = self.text.replace("Required", withString: "")
}
} else {
if textView.text.length > "Optional".length {
textView.text = self.text.replace("Optional", withString: "")
}
}
textView.textColor = blackColor//
}
}
Не забудьте зарегистрировать делегата: UITextViewDelegate
Я использую параметр --mirror и отправляю в личный репозиторий резервных копий:
Добавьте его как удаленное:
git remote add bak server:/path/to/backup/repo
Сделайте резервную копию:
git push --mirror bak
Это автоматически сделает ваш репозиторий резервных копий похожим на ваш активный - ветки будут создаваться, удаляться, обновляться (даже принудительно / не ускоренно) по мере необходимости. Вы также можете создать псевдоним для этого:
git config alias.bak "push --mirror bak"
Тогда просто нужно запустить «git bak», когда вы хотите сделать резервную копию. Вы также можете добавить это в задание cron.
Нет ничего плохого в том, чтобы перейти к той же ветке, из которой вы выполняете перезагрузку. Эти диаграммы должны проиллюстрировать, почему это работает нормально:
Допустим, так выглядит граф фиксации после того, как вы разветвили local_branch и сделали пару коммитов (C и D). Кто-то еще сделал одну фиксацию (E) в origin / master, так как вы разветвили local_branch:
A -- B -- E [origin/master] \ \ \-- C -- D [local_branch]
Затем после запуска «git rebase origin / master» график фиксации будет выглядеть как следующая диаграмма. "origin / master" остался прежним, но "local_branch" был перебазирован:
A -- B -- E [origin/master] \ \ \-- C -- D [local_branch]
На этом этапе, если вы выполните "git push origin local_branch: master", то это приведет к простой быстрой перемотке вперед. "origin / master" и "local_branch" будут идентичны:
A -- B -- E -- C -- D [origin/master],[local_branch]
Теперь вы можете продолжить работу над "local_branch". В конце концов вы можете получить что-то вроде этого:
A -- B -- E -- C -- D -- G -- I [origin/master] \ \ \-- F -- H [local_branch]
Обратите внимание, что это очень похоже на начальный график. Вы можете повторять этот процесс снова и снова.
Вам следует избегать перехода в какую-то другую ветку, из которой вы не выполняете перезагрузку. Здесь вы столкнетесь с проблемами (для другой ветки это будет выглядеть так, как будто ваша история "local_branch" была внезапно переписана после того, как вы переустановили с "origin / master").
Нет ничего плохого в том, чтобы продвигать личные ветки. Обычно это не рекомендуется, потому что люди могут начать работу на основе вашей ветки, а когда вы переустанавливаете их, их изменения остаются плавающими.
Я использую префикс для обозначения «это моя ветка, используйте ее на свой страх и риск» , например: fc-general-cleanup .
Можно ли настроить другой удаленный репозиторий куда вы подталкиваете все свои ветки? Еще одна вещь, которую следует учитывать, - это просто резервное копирование всего (важного) на вашем локальном компьютере, включая репозиторий git.
Другой вариант - отправить «local_branch» в репозиторий «origin», но в его собственную ветку в этом репо (не «master»), то есть:
git push origin local_branch : local_backup
Затем, когда вы будете готовы сделать еще одну резервную копию (и после того, как вы поработали и перенастроили), просто удалите ветку резервной копии из репозитория источника, прежде чем снова ее вытолкнуть:
git push origin: local_backup
<=== удаляет ветку из источника
git push origin local_branch: local_backup
Таким образом, вы не столкнетесь с проблемами при отправке «local_branch» после того, как он был перемещен из «origin / master».
И если удаление резервных веток заставляет вас нервничать (до тех пор, пока вы, наконец, не передадите свою работу «мастеру»),вы всегда можете продолжить переход в новую ветку с новым именем (например, «local_backup1», «local_backup2» и т. д.).
Вот что я делаю . Но - это не личное. Я делаю это для того, чтобы сотрудничать с собой (так сказать). Это позволяет мне работать в одной ветке на двух или более боксах. если бы у других людей был доступ к общему репо, они могли бы видеть работу, которую я выполняю в ветке. Конечно, к моим домашним репозиториям никто не имеет доступа, так что это все еще конфиденциально. На github мой материал мог видеть весь мир. Как будто им действительно не все равно. ;)