syncthing-fork repository recovery

The Syncthing Android Fork repository seemingly has seemingly suffered some data loss.

@Catfriend1 can you explain what happened?

In any case, it might be possible to recover at least the commit history for the project.

According to this John Hammond video, it’s possible to access deleted repository by means of forks that were left “dangling” as long as you have a hash for a commit made after the fork was created.

Using the wayback machine, the latest commit I could find for catfriend1/synchting-android was b9aaf3c6fe60ebf5efc8ecc95ac3f27e6910e967

Using a random dangling fork on github, I was able to get to the commit: GitHub - johnsonhit/syncthing-android at b9aaf3c6fe60ebf5efc8ecc95ac3f27e6910e967

Cloning the repo doesn’t seem to work, but you can still download a zipped version of it.

It’s from around 3 weeks ago, but I feel like it should be handy

If anyone knows the hash of the last commit before the repository died, we might be able to get the rest of it back.

1 Like

I’ve got no idea what happened and only got to know about this through this topic on the forum, but here is a full backup of the repository from my own storage. It was last updated on July 10.

F-Droid 1.30.0.2 has commit hash 05819c5cd9a188811c09f662cc1e202a04f77caa (from the fdroiddata repo here)

I’ve pushed it to GitHub here.

(using git fetch upstream 05819c5cd9a188811c09f662cc1e202a04f77caa:fdroid-1300002 worked for me)

I also have no insight here, but out of curiosity I cloned both @tomasz86 and @Catfriend1 's repos and compared main between the two, and there’s a quite significant divergence. Maybe the restore was from some feature branch. Copilot looks to have been invited. :shaking_face: It seems like a shame to lose all the history.

I tried git diff --ignore-cr-at-eol 05819c5cd9a188811c09f662cc1e202a04f77caa e29aed675dfc5bb1d95e3e5b9bc9cdbe2128a7b2 (first hash is the F-Droid hash and the second one is the first restore from backup commit (restore from backup · Catfriend1/syncthing-android@e29aed6))

This results in some changes in .github files, some changes in a translation file, and updating the F-Droid yaml file. (there are also some line ending changes for source files that I ignored).

git diff
diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml
index 9426bd131..34ca537ca 100644
--- a/.github/workflows/build-app.yaml
+++ b/.github/workflows/build-app.yaml
@@ -34,9 +34,13 @@ jobs:
         id: get_commit_hash
         run: |
           set -eu
-          git config --system --add safe.directory '*'
-          COMMIT_HASH=$(git rev-parse --short --verify HEAD)
-          echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV
+          if [ "${{ github.event_name }}" = "pull_request" ]; then
+            COMMIT_HASH_LONG="${{ github.event.pull_request.head.sha }}"
+          else
+            COMMIT_HASH_LONG="${{ github.sha }}"
+          fi
+          COMMIT_HASH_SHORT=$(echo "$COMMIT_HASH_LONG" | cut -c1-7)
+          echo "COMMIT_HASH=${COMMIT_HASH_SHORT}" >> $GITHUB_ENV
 
       - name: setup-debug-signing
         run: |
diff --git a/.github/workflows/release-app.yaml b/.github/workflows/release-app.yaml
index b863e3a0c..ca75efdfe 100644
--- a/.github/workflows/release-app.yaml
+++ b/.github/workflows/release-app.yaml
@@ -43,8 +43,13 @@ jobs:
         id: get_commit_hash
         run: |
           set -eu
-          COMMIT_HASH=$(git rev-parse --short --verify HEAD)
-          echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV
+          if [ "${{ github.event_name }}" = "pull_request" ]; then
+            COMMIT_HASH_LONG="${{ github.event.pull_request.head.sha }}"
+          else
+            COMMIT_HASH_LONG="${{ github.sha }}"
+          fi
+          COMMIT_HASH_SHORT=$(echo "$COMMIT_HASH_LONG" | cut -c1-7)
+          echo "COMMIT_HASH=${COMMIT_HASH_SHORT}" >> $GITHUB_ENV
 
       - name: build_release
         env:
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 509f304aa..c777b1f33 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -29,7 +29,7 @@
     <!-- StateDialogActivity -->
     <!-- Text for FoldersFragment and DevicesFragment loading view -->
     <!-- Shown instead of web_gui_loading if the key does not exist and has to be created -->
-    <string name="web_gui_creating_key">Generování bezpečnostních klíčů. Toto může trvat pár minut.</string>
+    <string name="web_gui_creating_key">Generování bezpečnostních klíčů. Toto může trvat pár minut…</string>
     <!-- FolderListFragment -->
     <string name="folders_fragment_title">Složky</string>
     <!-- Shown if no folders exist -->
@@ -164,7 +164,7 @@
     <string name="keep_wakelock_while_binary_running">Udržovat CPU aktivní pokud Syncthing běží</string>
     <string name="use_tor_title">Použít Tor</string>
     <!-- Dialog shown before config export -->
-    <string name="dialog_confirm_export">Opravdu chcete exportovat svou konfiguraci? Existující soubory budou přepsány. \n \nVAROVÁNÍ! Ostatní aplikace budou moci číst váš soukromý klíč ze zálohy a použít ho ke stahování/úpravám synchronizovaných souborů.</string>
+    <string name="dialog_confirm_export">Opravdu chcete exportovat svou konfiguraci? Stávající archiv bude přepsán.</string>
     <!-- Dialog shown before config import -->
     <string name="dialog_confirm_import">Opravdu chcete importovat konfiguraci? Existující nastavení včetně sdílených složek a seznam zařízení budou nahrazeny.</string>
     <!-- Toast shown after config was exported -->
@@ -252,15 +252,15 @@
     <!-- Text for the exit button on the drawer -->
     <string name="exit">Ukončit</string>
     <!-- Title of the notification shown while syncthing is running and enabled -->
-    <string name="syncthing_active">Syncthing běží</string>
-    <string name="config_create_failed">Vytváření konfiguračního souboru selhalo</string>
+    <string name="syncthing_active">Spuštěno</string>
+    <string name="config_create_failed">Vytváření konfiguračního souboru selhalo. Zkontrolujte výstup logcat.</string>
     <!-- ID of the default folder created on first start (camera folder). Must only contain 'a-z0-9_-'. Parameter is the device name-->
     <string name="default_folder_id">%1$s-foto</string>
-    <string name="notification_crash_title">Syncthing spadl %1$s</string>
+    <string name="notification_crash_title">Došlo k chybě (kód ukončení: %1$s)</string>
     <string name="notifications_other_channel">Ostatní upozornění</string>
     <!-- RestApi -->
     <!-- Title of the notification shown when a restart is needed -->
-    <string name="restart_title">Vyžadováno restartování</string>
+    <string name="restart_title">Vyžadován restart</string>
     <!-- Text for positive button in restart dialog -->
     <!-- Text for the dismiss button of the restart Activity -->
     <!-- Text of the notification shown when a restart is needed -->
@@ -272,7 +272,7 @@
     <string name="file_size_unit_KiB">KiB</string>
     <string name="file_size_unit_MiB">MiB</string>
     <string name="file_size_unit_GiB">GiB</string>
-    <string name="file_size_unit_TiB">TiB</string>
+    <string name="file_size_unit_TiB">TB</string>
     <!-- Strings representing units for transfer rates, from smallest to largest -->
     <string name="transfer_rate_unit_B_s">B/s</string>
     <string name="transfer_rate_unit_KiB_s">KiB/s</string>
@@ -304,7 +304,7 @@
 \nJsou použity následující intervaly: za první hodinu jsou ponechány verze pro každých 30 sekund, za první den jsou ponechány verze pro každou hodinu, za prvních 30 dní jsou ponechány verze pro každý den a do nejvyššího nastaveného stáří jsou ponechány verze pro každý týden.</string>
     <string name="maximum_age_description">Maximální doba pro zachování verze (dny, zapsáním hodnoty 0 bude ponecháno navždy).</string>
     <string name="versions_path_description">Cesta pro ukládání verzí (ponechte prázdné pro výchozí adresář .stversions ve sdíleném adresáři).</string>
-    <string name="cleanout_after_description">Počet dní, po který budou soubory uchovány v koši. Nula znamená navždy.</string>
+    <string name="cleanout_after_description">Počet dní, po který budou soubory uchovány v koši. Nula znamená navždy</string>
     <string name="external_versioning_description">První parametr příkazové řádky je cesta k adresáři, druhý je relativní cesta v témže adresáři.</string>
     <string name="no_versioning_description">Pro povolení verzování vyberte jeho typ.</string>
     <!-- Displays the current file versioning type in the Folder activity -->
@@ -339,7 +339,7 @@
     <string name="st_reset_database_question">Tato akce by měla být provedena pouze na základě doporučení naší podpory.
 \nSkutečně chcete vymazat databázi Syncthing?</string>
     <string name="st_reset_deltas_title">Resetovat rejstříky přírůstků</string>
-    <string name="syncthing_terminated">Syncthing byl ukončen</string>
+    <string name="syncthing_terminated">Ukončeno</string>
     <string name="config_file_missing">Soubor s nastaveními nezbytný pro fungování nebyl nalezen</string>
     <string name="notifications_persistent_channel">Syncthing je aktivní</string>
     <string name="storage_permission_title">Oprávnění pro přístup k úložišti</string>
@@ -427,7 +427,7 @@
     <string name="folder_type_switch_to_receive_encrypted_not_allowed">Přepnutí existujících složek na „Přijímat šifrovaně“ není podporováno.</string>
     <string name="no_recent_changes">Žádné nedávné změny.</string>
     <string name="dialog_settings_restart_app_title">Vyžadován restart</string>
-    <string name="syncthing_active_details">Syncthing běží: %1$s</string>
+    <string name="syncthing_active_details">Spuštěno: %1$s</string>
     <plurals name="syncthing_active_syncing_device_online">
         <item quantity="one">Synchronizace: %1$d%% hotovo, %2$d zařízení je připojeno</item>
         <item quantity="few">Synchronizace: %1$d%% hotovo, %2$d zařízení je připojena</item>
@@ -505,7 +505,7 @@
     <string name="keep_wakelock_while_binary_running_summary">Pouze pro Android 5 nebo nižší. Toto nastavení použijte, pokud při provozu na baterii zaznamenáte neočekávané odpojení. To bude mít za následek zvýšenou spotřebu baterie.</string>
     <string name="http_proxy_address_title">HTTP(S) proxy</string>
     <string name="broadcast_service_control_title">Řízení služeb vysíláním</string>
-    <string name="broadcast_service_control_summary">Výchozí: Zakázáno. Povolením této možnosti spustíte a zastavíte službu odesíláním broadcastu, např. z automatizačních aplikací třetích stran. Poznámka: Po změně této možnosti musíte aplikaci restartovat ručně.</string>
+    <string name="broadcast_service_control_summary">Výchozí: Vypnuto. Povolte tuto možnost, pokud chcete umožnit nástrojům jako ADB nebo aplikacím třetích stran (např. automatizačním aplikacím) ovlivňovat chování Syncthingu – např. řídit podmínky spuštění, vynuceně spustit nebo zastavit proces.</string>
     <string name="dialog_settings_restart_app_question">Změna této možnosti vyžaduje okamžitý restart aplikace. Všechny ostatní změny budou zahozeny. Pokračovat?</string>
     <string name="verbose_log_summary">Povolení této možnosti pomůže generovat protokoly ladění na velmi podrobné úrovni.</string>
     <string name="log_to_file_title">Protokol do souboru</string>
@@ -518,7 +518,7 @@
     <string name="reason_not_nonroaming_mobile_data">Syncthing neběží, protože jste zakázali spuštění na roamingových mobilních datových připojeních.</string>
     <string name="reason_run_condition_monitor_not_instantiated">RunConditionMonitor bnemá vytvořenu instance. Pokud tato chyba po restartu aplikace nezmizí, odešlete prosím hlášení o chybě.</string>
     <string name="custom_wifi_ssid_whitelist_empty">Žádné WiFi sítě na seznamu povolených. Přidejte nějaké v nastavení.</string>
-    <string name="syncthing_disabled">Syncthing neběží</string>
+    <string name="syncthing_disabled">Pozastaveno</string>
     <string name="config_read_failed">Načtení konfigurace se nezdařilo. Zvažte zálohování dat ze složek pro synchronizaci, poté vymažte data této aplikace a znovu ji spusťte.</string>
     <string name="default_android_camera_folder_label">Fotoaparát Android</string>
     <string name="notification_out_of_disk_space">SD karta je plná. Soubor %1$s</string>
@@ -567,7 +567,7 @@
     <string name="preference_app_theme_follow_dark">Tmavé</string>
     <string name="tips_and_tricks_title">Rady &amp; tipy</string>
     <string name="tip_sync_on_local_network_text">Pokud chcete synchronizovat pouze se zařízeními, která se nacházejí v místní síti WiFi nebo jsou dostupná prostřednictvím hotspotu WiFi, můžete snížit spotřebu baterie a vyhnout se náhodné synchronizaci přes mobilní data vypnutím následujících možností v části „Nastavení/Možnosti synchronizace“:\n- Povolit obcházení NAT\n- Globální zjišťování \n- Povolit přenos\nPonechte povolenou pouze možnost „Local discovery“.</string>
-    <string name="category_user_interface">Uživateslké rozhraní</string>
+    <string name="category_user_interface">Uživatelské rozhraní</string>
     <string name="tip_write_to_sdcard_text">Pokud se v uživatelském rozhraní zobrazí hlášení, že „Android uděluje synchronizaci přístup pouze pro čtení“ k určité složce, vytvořte novou složku pomocí této cesty, abyste získali přístup pro zápis:\n%1$s/YOUR_FOLDER_NAME.\nBuďte opatrní: Pokud tuto aplikaci odinstalujete, systém Android tuto složku vymaže. Před odinstalováním aplikace přesuňte data na bezpečné místo mimo složku .../Android.</string>
     <string name="preference_app_theme_follow_system">Podle systému</string>
     <string name="local_discovery_disabled">Místní zjišťování jste zakázali v nabídce „Nastavení“ &gt; „Možnosti synchronizace“ &gt; „Místní zjišťování“. Povolte jej, abyste mohli vyhledávat zařízení v místní síti.</string>
@@ -629,7 +629,7 @@
         <item quantity="other">%d minut</item>
     </plurals>
     <string name="reason_not_charging">Telefon se nenabíjí.</string>
-    <string name="reason_not_on_battery_power">Telefon neběží z baterie.</string>
+    <string name="reason_not_on_battery_power">Telefon je připojen k nabíječce.</string>
     <string name="reason_not_while_power_saving">Syncthing neběží, protože je telefon aktuálně v režimu šetření energie.</string>
     <string name="reason_not_while_auto_sync_data_disabled">Syncthing neběží, protože Android má momentálně vypnutou funkci „Synchronizace dat“.</string>
     <string name="reason_mobile_data_disallowed">Syncthing není nakonfigurován pro spuštění na mobilním datovém připojení.</string>
@@ -668,4 +668,20 @@
     <string name="clear_stversions_done">Složky .stversions byly úspěšně vyčištěny.</string>
     <string name="pizza_url_title">» Kočičky milujou pizzu « 😺🍕</string>
     <string name="pizza_url_summary">S jediným klepnutím můžete zanechat vřelý plátek laskavosti - doplněný s extra dobrou atmosférou, aby kočičky šťastně vrněly.</string>
+    <string name="folder_run_script_caption">Spustit skript</string>
+    <string name="folder_run_script_description">Expertní volba pro spuštění skriptů po změně stavu synchronizace složky.Skripty umístěné ve složce \'.stfolder/*.sh\' budou spuštěny. Jiné umístění skriptů není podporováno z bezpečnostních důvodů.\nPříklad spuštění skriptu: \'.stfolder/rename-files.sh sync_complete\'</string>
+    <string name="backup_rel_path_to_zip">Relativní cesta k archivu s konfigurací</string>
+    <string name="backup_password_title">Heslo k zabezpečení nastavení</string>
+    <string name="backup_password_summary">ℹ️ Doporučeno:\nZadejte silné heslo, které bude použito k zašifrování vaší konfigurace při exportu a k jejímu dešifrování při importu. Toto heslo si bezpečně uložte – budete ho potřebovat při obnově konfigurace a při použití funkce importu.\n\n⚠️ Nedoporučeno:\nNepoužít žádné heslo. V takovém případě mohou jiné aplikace potenciálně číst nebo upravovat vaši konfiguraci Syncthingu. Zpřístupnění konfigurace nese riziko, že útočník může získat neoprávněný přístup k vašim souborům pomocí odcizeného exportu nastavení.</string>
+    <string name="backup_password_set">✅ Heslo nastaveno: %1$s</string>
+    <string name="backup_password_not_set">⚠ Heslo nenastaveno.</string>
+    <string name="preference_category_actions">Akce</string>
+    <string name="preference_category_explanation">Informace</string>
+    <string name="preference_category_prepare">Připravit</string>
+    <string name="config_export_successful_no_path">Konfigurace byla exportována. Prosím, nezapomeňte heslo pro pozdější import.</string>
+    <string name="syncthing_forum_title">Fórum Syncthing</string>
+    <string name="syncthing_forum_summary">Získat pomoc na fóru Syncthing</string>
+    <string name="privacy_title">Zásady ochrany soukromí</string>
+    <string name="privacy_summary">Otevřete zásady ochrany soukromí Syncthing-Android, které popisují používání (pokud existuje) osobních údajů, například polohy.</string>
+    <string name="share_log_file_missing">Chybí soubor protokolu pro sdílení.</string>
 </resources>
diff --git a/docker/prebuild.sh b/docker/prebuild.sh
old mode 100755
new mode 100644
diff --git a/fdroid/com.github.catfriend1.syncthingandroid.yml b/fdroid/com.github.catfriend1.syncthingandroid.yml
index f6aea27ab..831b3ad85 100644
--- a/fdroid/com.github.catfriend1.syncthingandroid.yml
+++ b/fdroid/com.github.catfriend1.syncthingandroid.yml
@@ -2610,11 +2610,79 @@ Builds:
         -f 4)
       - sdkmanager "ndk;$ndkversion"
 
+  - versionName: 1.30.0.1
+    versionCode: 1300001
+    commit: 6746c397b133465d0ff37f7eeabfe72c75f742fc
+    subdir: app
+    submodules: true
+    sudo:
+      - apt-get update
+      - apt-get install -y autogen automake autopoint bzip2 g++ libc-dev make gettext
+        libtool pkg-config rename shtool
+      - apt-get install -y -t bookworm-backports golang-go
+    gradle:
+      - yes
+    srclibs:
+      - go@go1.23.0
+    prebuild:
+      - export goVersion=$(grep "ENV GO_VERSION" ../docker/Dockerfile | cut -d "="
+        -f2)
+      - '[[ $goVersion ]] || exit 1'
+      - git -C $$go$$ checkout -f go$goVersion
+      - sed -i -e '/signingConfig/,+2d' build.gradle.kts
+      - sed -i -e 's/java.net.URI/uri/' ../settings.gradle.kts
+      - sed -i -e 's|go_bin = which("go");|go_bin = "$$go$$/bin/go"|' ../syncthing/build-syncthing.py
+    scanignore:
+      - syncthing/src/github.com/syncthing/syncthing/lib/model/testdata
+    build:
+      - pushd $$go$$/src
+      - ./make.bash
+      - popd
+      - export ndkversion=$(grep "ndkVersionShared" ../build.gradle.kts | cut -d '"'
+        -f 4)
+      - sdkmanager "ndk;$ndkversion"
+
+  - versionName: 1.30.0.2
+    versionCode: 1300002
+    commit: 05819c5cd9a188811c09f662cc1e202a04f77caa
+    subdir: app
+    submodules: true
+    sudo:
+      - echo "deb https://deb.debian.org/debian trixie main" > /etc/apt/sources.list.d/trixie.list
+      - apt-get update
+      - apt-get install -y -t trixie openjdk-21-jdk-headless
+      - update-alternatives --auto java
+      - apt-get install -y autogen automake autopoint bzip2 g++ libc-dev make gettext
+        libtool pkg-config rename shtool
+      - apt-get install -y -t bookworm-backports golang-go
+    gradle:
+      - yes
+    srclibs:
+      - go@go1.23.0
+    prebuild:
+      - export goVersion=$(grep "ENV GO_VERSION" ../docker/Dockerfile | cut -d "="
+        -f2)
+      - '[[ $goVersion ]] || exit 1'
+      - git -C $$go$$ checkout -f go$goVersion
+      - sed -i -e '/signingConfig/,+2d' build.gradle.kts
+      - sed -i -e 's/java.net.URI/uri/' ../settings.gradle.kts
+      - sed -i -e 's|go_bin = which("go");|go_bin = "$$go$$/bin/go"|' ../syncthing/build-syncthing.py
+    scanignore:
+      - syncthing/src/github.com/syncthing/syncthing/lib/model/testdata
+    build:
+      - pushd $$go$$/src
+      - ./make.bash
+      - popd
+      - export ndkversion=$(grep "ndkVersionShared" ../build.gradle.kts | cut -d '"'
+        -f 4)
+      - sdkmanager "ndk;$ndkversion"
+
 MaintainerNotes: |-
   The submodule in syncthing/src/github.com/syncthing/syncthing must be
   pristine, as the version/release information is taken from git.
 
 AutoUpdateMode: Version
 UpdateCheckMode: Tags ^v[a-z0-9.]*-fdroid$
-CurrentVersion: 1.29.7.5
-CurrentVersionCode: 1290705
+UpdateCheckData: gradle/libs.versions.toml|version-code\s=\s"(\d+)"|.|version-name\s=\s"(.*)"
+CurrentVersion: 1.30.0.2
+CurrentVersionCode: 1300002
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e0bb34fbb..98697e375 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -5,8 +5,8 @@ min-sdk = "21"
 target-sdk = "36"
 
 # App version
-version-code = "1300002"
-version-name = "1.30.0.2"
+version-code = "1300001"
+version-name = "1.30.0.1"
 
 aboutLibraries = "12.2.4"
 activity = "1.10.1"
diff --git a/gradlew b/gradlew
old mode 100755
new mode 100644
diff --git a/syncthing/src/github.com/syncthing/syncthing b/syncthing/src/github.com/syncthing/syncthing
deleted file mode 160000
index 0945304a7..000000000
--- a/syncthing/src/github.com/syncthing/syncthing
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0945304a79d6bbaeac7fc2cc1b06f57d3cf66622

1 Like

Ah yes, that was a bit more up-to-date baseline than the Thomasz86 fork, the further changes I was seeing have commits in there from the last few days.

The situation is a bit more complicated. I’m in contact with @Catfriend1 and trying to find the best path forward. Please have some patience. Regarding commit history, I don’t think anything is completely lost. Only the issues and PRs are probably gone.

2 Likes

Maybe it would be possible to restore everything (including issues and PRs) from the GitHub Archive Program? This assumes that it was enabled for Syncthing Fork, but the program is enabled by default on all public repositories.

image

2 Likes

@tomasz86

That worked nicely to get the latest commit id of cf27b6ddc3d95bacae249e96df59b0ddd4bb5d9d, (here) Which matches the restore from backup commit apart from the line endings.

1 Like

Very cool, TIL about https://archive.softwareheritage.org

Hi,

I’ve already made a restore available at the original repo address.

My actions have personal reasons, including self-protection in difficult times. That led me to the decision to remove sensitive data from the repo. Please respect this.

It’s not the community’s fault, but I want to be able to sleep peacefully again. I don’t know if you can imagine that. A while ago, the hashes in the repository changed because I was looking for an easy way to solve my problem without causing too much trouble for others. That didn’t work, and I panicked due to my personal tense situation, so I decided to restart and continue the project. Even though it shocked me a lot, I’m grateful for the tip from our team that my removal was unsuccessful. These days, I’m in the process of giving up online accounts I’ve built up over years, which isn’t easy for me. If I’d known what would happen this year since June, I would have prepared better in many places and, as I’ve realized, also studied git more carefully before using it.

I’ve already apologized, you did nothing wrong.

Facts about the restore: “the code did not change” - despite some crlf/lf diff that popped up when I compared old vs new repo.

I don’t know how many out there also work on syncthing-android. And myself liked it very much to look up past code changes to remember how a feature was done. If not possible for me to change, maybe those forks could serve the dev lookup requests in a good way. Please note that I do not want to offer the “removed” information in my repository. That’s also the first space where someone takes a look, I think.

If it is really important to you to have the full history, we can maybe copy the last state including main commit history to the syncthing org, e.g. to a branch of syncthing-android from the point where it was forked back in 2019 to yesterday?

3 Likes

After some chat in private, I’ve better understood what the problem was and restored the history. The content is the same as of state when it disappeared yesterday but some git sha’s are different.

2 Likes

@mapei Could you please give me a hand and help on treating this with little less voice?

1 Like

How may I contact you in private? It doesn’t seem possible on this forum, and I can’t find any contact info in your GitHub.

2 Likes

@Catfriend1 So first of all, your repo and your time and your life is yours and you don’t owe anyone here anything in terms of explanations or apologies. Rewriting a repo for redaction of private data is totally legit, although it (as noted) doesn’t mean it’s not still out there in a lot of other places.

That said, with the hashes changed, everyone who’s pulled from it previously will get an error on next pull, and obviously all existing forks have been detached. This will raise questions since it’s an unusual situation, regardless of what’s written here or elsewhere, and I’d suggest for your sake that you may want to have a short standard response to give people. “Sorry, rewritten to correct a couple of mistakes, please reapply any changes to latest main” type of thing.

@mapei you can send a private message here on the forum now.

3 Likes