Как 'мерзавец вытягивал', едят мою домашнюю работу?

xsel | sed 's/./usleep 200000,str &,/g' | xargs -d, xte

"xte" является частью xautomation. xclip, другая альтернатива xsel.

Это работало бы на буквы, но вероятно не многие другие, поскольку это генерирует ключевые события на основе строк.

53
27.07.2014, 00:53
4 ответа

Да, gitсъел мою домашнюю работу. Все это.

Я сделал ddобраз этого диска после инцидента и позже возился с ним. Реконструируя серию событий из системных журналов, я делаю вывод, что произошло что-то вроде этого:

  1. Команда обновления системы(pacman -Syu)была отправлена ​​за несколько дней до этого инцидента.
  2. Длительное отключение сети означало, что -она осталась -при попытке загрузить пакеты. Разочарованный отсутствием интернета, я усыплял систему и ложился спать.
  3. Несколько дней спустя система проснулась и снова начала находить и скачивать пакеты.
  4. Загрузка пакета завершилась как раз перед тем, как я начал возиться с этим репозиторием.
  5. Установка системы glibc была обновлена ​​после git checkoutи до git pull.
  6. Двоичный файл gitбыл заменен после запуска git pullи до его завершения.
  7. И в седьмой день, gitотдыхал от всех своих трудов. И удалил мир, чтобы всем остальным тоже пришлось отдыхать.

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

6
27.01.2020, 19:33
[

]Если повезёт, это можно исправить следующей командой:[

] [
git reset --hard ORIG_HEAD  
] [

]Когда начинаются потенциально опасные изменения, git запихивает ваше текущее состояние в ORIG_HEAD. С его помощью можно отменить слияние или перебазирование.[

] [

][]Git Manual: Отмена слияния[][

]
1
27.01.2020, 19:33

Похоже, кто-то запустил git push --force в этом репо, и вы удалили эти изменения. Попробуйте клонировать свежее репо, чтобы вы снова вернулись в чистое рабочее состояние.

-1
27.01.2020, 19:33

Возможно из-за ошибки при определении пути к файлу, который нужно удалить.

Ваш случай напомнил мне прекрасный день, когда мой самодельный метод remove (path) пытался удалить корневую папку, потому что данный параметр был пустой строкой, которую ОС исправила (!) Как корневую папку.

Это может быть похожая ошибка git. Так, что:

  1. Команда Rebase хотела удалить файл типа remove (project_folder + file_path) (псевдокод)
  2. Каким-то образом file_path в то время был пустым.
  3. Команда оценивается как что-то вроде remove (project_folder)
2
27.01.2020, 19:33

Теги

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