Comment puis-je obtenir les informations de version actuelle à partir de ma sauvegarde ?

Comme mentionné dans le titre, mon VPS a été attaqué. J’ai essayé d’obtenir les informations de la version actuelle de discourse en exécutant ./discourse-doctor, mais cela a échoué.

Heureusement, j’avais téléchargé une sauvegarde sur ma machine locale.
Comment puis-je récupérer les informations de version actuelles à partir de cette sauvegarde ?
Merci.

Quel problème essayez-vous de résoudre ? Vous pouvez restaurer la sauvegarde dans n’importe quelle version plus récente.

Je prévois de réinstaller le système d’exploitation puis de configurer la version précédente de Discourse pour éviter tout problème de compatibilité avec les plugins.

Au fait, si un VPS a été piraté, est-il toujours possible de sauvegarder Discourse ? Je n’ai qu’une sauvegarde automatique datant de quelques jours.

Cela dépend de l’état dans lequel ils l’ont laissé. Vous pourriez essayer de passer par la console Rails :

cd /var/discourse 
./launcher enter app
discourse backup
cd public/backups/default
scp * user@destination.example.com:

Le nom de votre fichier de sauvegarde a le format forumname-2025-05-22-151843-v20250521053324.tar.gz

La longue chaîne à la fin est la dernière migration qui a été exécutée.

Pour savoir à quel commit elle appartient,

cd /var/www/discourse
git blame db/migrate/20250521053324*

Vous verrez maintenant une sortie et la colonne de gauche contient le hachage du commit.
C’est le commit minimal auquel votre nouveau forum devrait être.

(Parfois, le commit appartient à un plugin, dans ce cas, utilisez locate pour trouver le plugin, allez dans son répertoire et faites la même stanza git blame)

Je vous recommanderais simplement de mettre à jour vers la dernière version. C’est le plus facile, et il n’y a aucun risque. Si cela ne fonctionne pas, alors vous pouvez suivre ces excellentes instructions pour trouver le commit et revenir à celui-là (et allez-vous aussi restaurer chacun des plugins à un certain commit ?).

J’ai essayé d’effectuer une sauvegarde, mais elle a échoué. La sortie est la suivante :

# cd /var/discourse/
/var/discourse# ./launcher enter app
détection de l'architecture x86_64.
/var/www/discourse# discourse backup
Démarrage de la sauvegarde...
EXCEPTION : BackupRestore::OperationRunningError
/var/www/discourse/lib/backup_restore/backuper.rb:70:in `ensure_no_operation_is_running'
/var/www/discourse/lib/backup_restore/backuper.rb:22:in `run'
script/discourse:84:in `backup'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:451:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:28:in `block in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:20:in ` `<top (required)>'`
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in ` `<main>`'
Suppression des anciennes sauvegardes...
Nettoyage...
Suppression des fichiers '.tar' restants...
Marquage de la sauvegarde comme terminée...
Notification de la 'système' de la fin de la sauvegarde...
Terminé!
[ÉCHEC]

Cela signifie-t-il que je ne pourrai pas effectuer de sauvegarde ?

Il pense qu’une autre sauvegarde est en cours d’exécution. Vous pouvez essayer de redémarrer le conteneur puis de réessayer.

Merci pour vos conseils.
J’ai réussi à démarrer la sauvegarde avec succès.
Cependant, le processus est bloqué à ce stade depuis environ 20 minutes (voir capture d’écran ci-dessous). Est-ce normal ?

Oui, ce tableau peut devenir très volumineux en raison d’un bug, voir Clean up user_auth_token_logs?

Si cela devient un problème, vous pouvez arrêter la sauvegarde, entrer dans la console Rails

rails c
UserAuthTokenLog.delete_all

puis redémarrer la sauvegarde.

Merci pour votre suggestion. J’ai réussi à sauvegarder les données les plus récentes.
De plus, puisque le système d’exploitation a déjà été réinstallé, comment puis-je restaurer l’état le plus récent directement en utilisant le fichier app.yml et les fichiers de sauvegarde ? Existe-t-il une documentation officielle à ce sujet ? Ou dois-je passer d’abord par le processus d’installation Docker standard, puis importer la sauvegarde pour tout restaurer ?

Au fait, lorsque j’ai essayé de savoir à quel commit correspond ma sauvegarde Discourse, j’ai reçu la sortie suivante. Avez-vous une idée pourquoi cela pourrait être ?

/var/www/discourse# git blame db/migrate/20240516145911*
fatal: aucun chemin de ce type 'db/migrate/20240516145911*' dans HEAD

Ça !

Spoiler : il appartient au plugin de chat.

root@testbeta:/var/www/discourse# locate 202405161459
/var/www/discourse/plugins/chat/db/migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@testbeta:/var/www/discourse# cd plugins/chat/
root@testbeta:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*

Merci beaucoup !
Je ne suis pas tout à fait sûr :thinking: cette méthode génère-t-elle un commit dans le dépôt Discourse lui-même, plutôt que dans le plugin de chat ? Si oui, pourriez-vous expliquer le mécanisme sous-jacent ?

Il semble que je puisse suivre ce guide ?
https://meta.discourse.org/t/restore-a-backup-from-the-command-line/

[citation=“Alienazk, post:10, topic:367077”]
20240516145911
[/citation]

J’ai essayé la méthode que vous avez recommandée, mais j’ai rencontré le problème suivant.
Pourriez-vous jeter un coup d’œil et me dire ce qui a pu mal se passer ?

/var/www/discourse# locate 20240516145911
/shared/backups/default/discourse-2025-05-24-113557-v20240516145911.tar.gz
/var/www/discourse/plugins/chat/db/post_migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@tartali-app:/var/www/discourse# cd plugins/chat/
root@tartali-app:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*
fatal: no such path 'plugins/chat/db/migrate/20240516145911*' in HEAD```

Désolé. Je l’ai obtenu par git blame db/post_migrate/20240516145911*Voici la sortie:

root@tartali-app:/var/www/discourse/plugins/chat# git blame db/post_migrate/20240516145911*
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.42 KiB | 14.20 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 21.91 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.90 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.82 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.78 KiB | 23.44 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.39 KiB | 22.92 MiB/s, done.Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.39 KiB | 22.41 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (404/404), terminé.
remote: Compression des objets : 100 % (404/404), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2167 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.74 KiB | 21.91 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.40 KiB | 22.92 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.39 KiB | 22.41 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (414/414), terminé.
remote: Compression des objets : 100 % (414/414), terminé.
Réception des objets : 100 % (2571/2571), 1007.78 KiB | 22.90 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2157 (à partir de 1)
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (403/403), terminé.
remote: Compression des objets : 100 % (403/403), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2168 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.66 KiB | 22.39 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (413/413), terminé.
remote: Compression des objets : 100 % (413/413), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2158 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.70 KiB | 12.44 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (412/412), terminé.
remote: Compression des objets : 100 % (412/412), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2159 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.71 KiB | 22.39 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (419/419), terminé.
remote: Compression des objets : 100 % (418/418), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.31 KiB | 21.92 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.remote: Counting objects: 100% (404/404), done.
remote: Compressing objects: 100% (404/404), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2167 (from 1)
Receiving objects: 100% (2571/2571), 1007.66 KiB | 22.90 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (414/414), done.
remote: Compressing objects: 100% (414/414), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2157 (from 1)
Receiving objects: 100% (2571/2571), 1007.70 KiB | 12.00 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (412/412), done.
remote: Compressing objects: 100% (412/412), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2159 (from 1)
Receiving objects: 100% (2571/2571), 1007.70 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (416/416), done.
remote: Compressing objects: 100% (416/416), done.
Receiving objects: 100% (2569/2569), 1006.98 KiB | 22.89 MiB/s, done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2153 (from 1)
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (418/418), done.
remote: Compressing objects: 100% (417/417), done.
Receiving objects: 100% (2569/2569), 1007.58 KiB | 22.90 MiB/s, done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2151 (from 1)
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.90 KiB | 22.88 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.75 KiB | 20.57 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.74 KiB | 23.44 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.55 KiB | 23.43 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.56 KiB | 23.43 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (418/418), terminé.
remote	: Compression des objets: 100% (417/417), terminé.
remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2151 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.56 KiB | 10.72 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (405/405), terminé.
remote	: Compression des objets: 100% (405/405), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.91 KiB | 22.38 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (404/404), terminé.
remote	: Compression des objets: 100% (404/404), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2165 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.90 KiB | 22.38 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (404/404), terminé.
remote	: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.88 KiB | 22.88 MiB/s, terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2165 (à partir de 1)
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (416/416), terminé.
remote	: Compression des objets: 100% (416/416), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.89 KiB | 5.47 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (415/415), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1006.89 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2154 (à partir de 1)
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (415/415), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1006.89 KiB | 21.42 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2154 (à partir de 1)
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (416/416), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.50 KiB | 23.43 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (405/405), terminé.
remote	: Compression des objets: 100% (405/405), terminé.remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 13.98 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 19.36 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (417/417), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (de 1)
Réception des objets: 100% (2569/2569), 1007.29 KiB | 15.50 MiB/s, fait.
Résolution des deltas: 100% (2/2), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 16.50 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
Réception des objets: 100% (2569/2569), 1006.63 KiB | 22.37 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (417/417), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (de 1)
Réception des objets: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, fait.
Résolution des deltas: 100% (2/2), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 21.42 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
Réception des objets: 100% (2569/2569), 1006.67 KiB | 20.13 MiB/s, fait..
Résolution des deltas : 100 % (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (417/417), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (from 1)
Réception des objets : 100 % (2569/2569), 1007.29 KiB | 21.43 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (416/416), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (from 1)
Réception des objets : 100 % (2569/2569), 1006.68 KiB | 21.88 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (415/415), terminé.
remote: Compression des objets : 100 % (414/414), terminé.
Réception des objets : 100 % (2569/2569), 1007.28 KiB | 23.42 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2154 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (415/415), terminé.
remote: Compression des objets : 100 % (415/415), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2154 (from 1)
Réception des objets : 100 % (2569/2569), 1006.68 KiB | 17.98 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (417/417), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
Réception des objets : 100 % (2569/2569), 1007.29 KiB | 22.89 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (404/404), terminé.
remote: Compression des objets : 100 % (404/404), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (from 1)
Réception des objets : 100 % (2569/2569), 1006.63 KiB | 20.54 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (416/416), terminé.
remote: Compression des objets : 100 % (416/416), terminé.remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.68 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (404/404), terminé.
remote: Compressing objects: 100% (404/404), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 19.74 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (415/415), terminé.
remote: Compressing objects: 100% (415/415), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2154 (de 1)
Réception des objets: 100% (2569/2569), 1006.68 KiB | 14.18 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1007.14 KiB | 22.89 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2153 (de 1)
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.54 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (404/404), terminé.
remote: Compressing objects: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.49 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (de 1)
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.53 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.remote: Compression des objets: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.53 KiB | 18.99 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (404/404), terminé.
remote: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.51 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (404/404), terminé.
remote: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.51 KiB | 22.88 MiB/s, terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (à partir de 1)
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (417/417), terminé.
remote: Compression des objets: 100% (417/417), terminé.
remote: Total 2569 (delta 2), réutilisé 0 (delta 0), pack-reused 2152 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.17 KiB | 13.80 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (416/416), terminé.
remote: Compression des objets: 100% (416/416), terminé.
Réception des objets: 100% (2569/2569), 1006.56 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (416/416), terminé.
remote: Compression des objets: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.56 KiB | 11.44 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (405/405), terminé.
remote: Compression des objets: 100% (405/405), terminé.
Réception des objets: 100% (2569/2569), 1006.45 KiB | 21.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2164 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel..
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  3) class UpdateUserOptionsForThreadTitlePrompts 
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id >= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
:...skipping...
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  3) class UpdateUserOptionsForThreadTitlePrompts 
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id >= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
~