SeaMeet Desktop இங்கே — எல்லாவற்றையும் பதிவு செய்யுங்கள், எதையும் தவறவிடாதீர்கள். இலவசமாக பதிவிறக்கம் →

GitHub ஒத்திசைவு அமைப்பு

அத்தியாயம் 38: GitHub ஒத்திசைவு அமைப்பு

GitHub Sync உங்கள் SeaMeet பணியிடத்தை உங்கள் சொந்த GitHub களஞ்சியத்தில் வாழும் ஒரு தனிப்பட்ட, பதிப்பு-கட்டுப்படுத்தப்பட்ட Markdown மரமாக மாற்றுகிறது. நீங்கள் ஒரு குறிப்பைத் திருத்தும்போது, ஒரு பதிவை மறுபெயரிடும்போது அல்லது ஒரு wiki பக்கத்தைத் திருத்தும்போது, ​​SeaMeet அமைதியாக மாற்றத்தை பின்னணியில் commit செய்து GitHub-க்கு push செய்கிறது. வேறு மடிக்கணினியில் SeaMeet-ஐத் திறக்கவும், உங்கள் குறிப்புகள் முதல் தொடக்கத்தில் pull செய்யப்படும் — நடுவில் Dropbox இல்லை, loop-இல் Seasalt சர்வர் இல்லை. repo உங்களுடையது, தரவு உங்களுடையது, நீங்கள் எப்போது வேண்டுமானாலும் github.com-இல் நேரடியாக உலாவலாம்.

மாதிரி எளிது: உங்கள் GitHub களஞ்சியம் சேமிப்பகம். SeaMeet ஒரு ஒத்திசைவு சேவையை இயக்காது. இது உங்கள் கணக்கில் ஒரு சிறிய GitHub App-ஐ நிறுவுகிறது, ஒரு பயனர்-க்கு OAuth டோக்கனைப் பெறுகிறது, மற்றும் Git commit-களை நேரடியாக push மற்றும் pull செய்ய அந்த டோக்கனைப் பயன்படுத்துகிறது. சேமிப்பகம் GitHub-இன் இலவச அடுக்கு — இது உங்களுக்கு வரம்பற்ற தனிப்பட்ட repo-களை வழங்குகிறது — ஒத்திசைவு பயனுள்ளதாக இலவசம். ஒவ்வொரு SeaMeet பணியிடமும் அதன் சொந்த களஞ்சியமாக இருப்பதால், நீங்கள் வேலை மற்றும் தனிப்பட்ட பணியிடங்களை முழுமையாக பிரிக்கலாம்.


அத்தியாய நோக்கங்கள்

இந்த அத்தியாயத்தைப் படித்த பிறகு, நீங்கள் பின்வருவனவற்றைச் செய்ய முடியும்:

  • உங்கள் கணக்கு அல்லது நிறுவனத்தில் SeaMeet GitHub App-ஐ நிறுவவும்
  • OAuth-இல் SeaMeet-ஐ அங்கீகரிக்கவும் மற்றும் உங்களுக்காக ஒரு தனிப்பட்ட ஒத்திசைவு களஞ்சியத்தை உருவாக்க அனுமதிக்கவும்
  • ஒத்திசைவு நிலை பட்டியைப் படிக்கவும் மற்றும் ஒத்திசைவு நிலை இயந்திரத்தில் ஒவ்வொரு நிலையையும் புரிந்து கொள்ளவும்
  • OAuth பின்னணியில் தானாக-புதுப்பிக்கப்பட்டுள்ளதை எப்போது அடையாளம் காண வேண்டும் மற்றும் கைமுறையாக மீண்டும்-அங்கீகரிக்க வேண்டிய போது
  • இரண்டு சாதனங்களில் ஒரே குறிப்பு திருத்தப்பட்டால் ஒரு ஒத்திசைவு முரண்பாட்டை தீர்க்கவும்
  • ஒத்திசைவு அமைப்புகள் குழுவை மாற்றியமைக்கவும் (auto-sync, sync interval, sync on startup)
  • மிகவும் பொதுவான தோல்வி முறைகளை சிக்கல்தீர்வு செய்யவும்

முன்நிபந்தனைகள்

நீங்கள் தொடங்குவதற்கு முன், உங்களிடம் இருப்பதை உறுதிசெய்க:

  • ஒரு GitHub கணக்கு — இலவச அடுக்கு சரி; உங்களுக்கு GitHub Pro தேவையில்லை
  • செயலில் உள்ள ஒத்திசைவு உரிமை — BYOK Pro மற்றும் Sync Pro அடுக்குகளுடன் சேர்க்கப்பட்டுள்ளது. உங்கள் பில்லிங் அடுக்கில் ஒத்திசைவு சேர்க்கப்படவில்லை என்றால், ஒத்திசைவு அமைப்புகள் திரை "Subscribe to enable sync" பேனரைக் காண்பிக்கும். திட்ட விவரங்களுக்கு அத்தியாயம் 35: சந்தா & பில்லிங் பார்க்கவும்.
  • SeaMeet-இல் ஒரு பணியிடம் திறந்திருக்கும் — ஒத்திசைவு செயலில் உள்ள பணியிடத்துடன் இணைக்கப்படுகிறது, பயன்பாட்டின் முழுமையாக அல்ல. உங்களிடம் பல பணியிடங்கள் இருந்தால், ஒவ்வொன்றும் அதன் சொந்த GitHub களஞ்சியம்.
  • வேலை செய்யும் இணைய அணுகல் — அமைப்பு ஓட்டம் உங்கள் இயல்புநிலை உலாவியில் GitHub-ஐத் திறக்கிறது

ஒரு பணியிடத்திற்கு ஒரு repo. நீங்கள் இணைக்கும் ஒவ்வொரு பணியிடத்திற்கும் SeaMeet ஒரு தனி தனிப்பட்ட களஞ்சியத்தை உருவாக்குகிறது. இது வேலை குறிப்புகள் மற்றும் தனிப்பட்ட குறிப்புகளை சுத்தமாக தனிமைப்படுத்துகிறது, மற்றொன்றை தொடாமல் ஒன்றை துண்டிக்க முடியும் என்று அர்த்தம்.


படிப்படியாக அமைப்பு

முதல் முறையாக அமைப்பு சுமார் 90 விநாடிகள் ஆகும்: GitHub-இல் SeaMeet-ஐ அங்கீகரிக்கவும், அதை உங்கள் repo-ஐ உருவாக்க அனுமதிக்கவும், ஆரம்ப பதிவேற்றத்திற்காக காத்திருக்கவும், மற்றும் முடிந்தது.

படி 1: ஒத்திசைவு அமைப்புகளைத் திற

  1. அமைப்புகள் கியர் ஐகானைக் கிளிக் செய்க
  2. இடது ரெயிலில் Sync தாவலைத் திற
  3. நீங்கள் "Sync with GitHub" தலைப்பு கார்டைப் பார்ப்பீர்கள்

Sync தாவலைப் பார்க்கவில்லை என்றால், உங்கள் சந்தா அடுக்கில் ஒத்திசைவு சேர்க்கப்படவில்லை — மேம்படுத்த அத்தியாயம் 35 பார்க்கவும்.

"Back up your notes to a private GitHub repo with BYOK Pro" என்ற பேனரைப் பார்த்தால், உங்களிடம் இலவச கணக்கு உள்ளது. paywall-ஐத் திறக்க பேனரைக் கிளிக் செய்க, அல்லது நீங்கள் சந்தா பெறும் வரை இந்த அத்தியாயத்தின் மீதியைத் தவிர்க்கவும்.

படி 2: "Set Up GitHub Sync"-ஐ கிளிக் செய்க

ஒத்திசைவு அமைப்புகள் காலி நிலை மூன்று பயன் ஓடுகளைக் காட்டுகிறது ("Free & private", "Effectively unlimited", "One repo per workspace") மற்றும் கீழே ஒரு முதன்மை Set Up GitHub Sync பொத்தான்.

அதைக் கிளிக் செய்க. உங்கள் இயல்புநிலை உலாவி ஒரு GitHub அங்கீகார பக்கத்திற்கு திறக்கிறது.

படி 3: SeaMeet GitHub App-ஐ நிறுவவும் (ஒரு முறை)

நீங்கள் முதல் முறையாக SeaMeet-ஐ அங்கீகரிக்கும்போது, ​​GitHub உங்கள் கணக்கில் SeaMeet GitHub App-ஐ நிறுவ கேட்கும். இது ஒரு GitHub கணக்குக்கு ஒரு முறை படி (அல்லது நிறுவனத்திற்கு, நீங்கள் ஒரு நிறுவனத்திற்குச் சொந்தமான repo-வுடன் ஒத்திசைக்க விரும்பினால்).

GitHub நிறுவு பக்கத்தில்:

  1. SeaMeet எழுத விரும்பும் கணக்கு அல்லது நிறுவனத்தைத் தேர்ந்தெடுக்கவும்
  2. "All repositories" அல்லது "Only select repositories" இரண்டையும் தேர்ந்தெடுக்கவும் — SeaMeet App-க்கு உங்கள் சார்பாக ஒத்திசைவு repo-ஐ உருவாக்க contents: write மற்றும் administration: write அனுமதிகள் தேவை
  3. Install & Authorize-ஐ கிளிக் செய்க

GitHub உங்களை SeaMeet-க்கு திருப்பி அனுப்புகிறது. ஒத்திசைவு அமைப்புகள் குழு இப்போது காட்டுகிறது:

┌──────────────────────────────────────────────────────┐
│   ✓ அங்கீகரிக்கப்பட்டது                                │
│   ⟳ களஞ்சியத்தை உருவாக்குகிறது & பதிவேற்றுகிறது...     │
└──────────────────────────────────────────────────────┘

ஏன் ஒரு GitHub App மற்றும் ஒரு வெற்று OAuth டோக்கன் அல்ல? GitHub Apps-க்கு நுணுக்கமான ஒரு-repo அனுமதிகள் மற்றும் சுழலும் refresh டோக்கன்கள் உள்ளன. நீங்கள் வெளிப்படையாகத் தேர்ந்தெடுத்த repo-களுக்கு மட்டுமே SeaMeet எழுத்து அணுகலைக் கொண்டுள்ளது, மற்றும் OAuth access டோக்கன் ஒவ்வொரு 8 மணி நேரத்திற்கும் காலாவதியாகிறது — அது கசிந்தாலும், சாளரம் சிறியதாக இருக்கும். (அதை உங்களுக்குக் கண்ணுக்குத் தெரியாதவாறு SeaMeet எவ்வாறு வைத்திருக்கிறது என்பதற்கு கீழே உள்ள OAuth Auto-Refresh பிரிவைப் பார்க்கவும்.)

படி 4: களஞ்சியம் உருவாக்கம் (தானியங்கி)

SeaMeet இப்போது உங்கள் சார்பாக GitHub API-ஐ அழைக்கிறது மற்றும்:

  1. உங்கள் பணியிடத்தின் பெயரிடப்பட்ட ஒரு தனிப்பட்ட repo-ஐ உருவாக்குகிறது (எ.கா. seameet-work-notes)
  2. ஏற்கனவே ஒன்று இல்லை என்றால் உங்கள் பணியிட கோப்புறையில் ஒரு உள்ளூர் Git repo-ஐ துவக்குகிறது
  3. git init-ஐ இயக்குகிறது, ஆடியோ/வீடியோ/ஸ்கிரீன்ஷாட் கோப்புகளை விலக்கும் ஒரு .gitignore-ஐ எழுதுகிறது, மற்றும் ஒரு ஆரம்ப commit-ஐ உருவாக்குகிறது
  4. புதிய GitHub repo-ஐ origin-ஆக சேர்க்கிறது
  5. ஆரம்ப commit-ஐ push செய்கிறது

சைட்பாரின் கீழே உள்ள நிலை பட்டி பின்வருவனவற்றின் மூலம் மாறுவதைப் பார்ப்பீர்கள்:

களஞ்சியத்தை உருவாக்குகிறது...  →  ஒத்திசைக்கிறது...  →  ஒத்திசைக்கப்பட்டது · இப்போதுதான்

அவ்வளவுதான். உங்கள் பணியிடம் இப்போது GitHub-ஆல் ஆதரிக்கப்படுகிறது.

படி 5: முதல் ஒத்திசைவு தானாக இயங்கும்

இனிமேல், SeaMeet ஒவ்வொரு 5 நிமிடங்களுக்கும் (இயல்பாக) நீங்கள் சேமிக்கப்படாத மாற்றங்களைக் கொண்டிருக்கும்போதெல்லாம் auto-commit செய்து, ஒவ்வொரு commit-க்குப் பிறகும் உடனடியாக GitHub-க்கு push செய்கிறது. SeaMeet-இன் அடுத்த தொடக்கத்தில், நீங்கள் தொகுக்கத் தொடங்குவதற்கு முன்பே பயன்பாடு GitHub-இலிருந்து pull செய்கிறது — எனவே மற்றொரு சாதனத்தில் செய்யப்பட்ட மாற்றங்கள் பயன்பாடு திறக்கும் தருணத்தில் தோன்றும்.


ஒத்திசைவு நிலை இயந்திரம்

SeaMeet-இன் SyncManager ஒரு சிறிய நிலை இயந்திரத்தை இயக்குகிறது மற்றும் அதன் தற்போதைய நிலையை ரெண்டரருக்கு ஒளிபரப்புகிறது. சைட்பார் SyncStatusBar மற்றும் ஒத்திசைவு அமைப்புகள் குழு இரண்டும் இந்த நிலையிலிருந்து படிக்கின்றன. நிலைகளைப் புரிந்து கொள்வது UI-ஐ துல்லியமாக படிக்க உதவுகிறது.

                      ┌─────────────┐
                      │    idle     │ ◄──────┐
                      └──────┬──────┘        │
                             │ file change   │
                             ▼               │
                      ┌─────────────┐        │
                ┌────►│   pending   │        │
                │     └──────┬──────┘        │
       file     │            │ commit timer  │
       change   │            ▼               │
                │     ┌─────────────┐        │
                │     │ committing  │        │
                │     └──────┬──────┘        │
                │            ▼               │
                │     ┌─────────────┐        │
                │     │   pushing   │        │
                │     └──────┬──────┘        │
                │            ▼               │
                │     ┌─────────────┐        │
                │     │   synced    │── 5s ──┘
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   pulling   │  (தொடக்கம் அல்லது push-நிராகரிக்கப்பட்டது)
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤  conflict   │  → பயனர் தீர்க்கிறார் → syncing → synced
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   offline   │  → நெட்வொர்க் திரும்பியது → மீண்டும் முயற்சி
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   timeout   │  → பயனர் Retry-ஐ கிளிக் செய்கிறார்
                │     └─────────────┘
                │
                │     ┌────────────────┐
                └─────┤ token-expired  │ → மீண்டும்-அங்கீகரிக்க கார்டு
                      └────────────────┘

ஒவ்வொரு நிலையும் UI-இல் என்ன அர்த்தம் என்பது இங்கே:

நிலைநிலை பட்டி லேபிள்இதன் அர்த்தம்
idle"Synced · 2 min ago"எதுவும் நிலுவையில் இல்லை, கடைசி commit தூய்மையாக இருந்தது
pending"Pending..."சேமிக்கப்படாத மாற்றங்கள் உள்ளன; அடுத்த இடைவெளியில் commit டைமர் தீப்பற்றும்
committing"Syncing..."உள்ளூரில் ஒரு Git commit முன்னேற்றத்தில் உள்ளது
pushing"Pushing..."உள்ளூர் commit முடிந்தது; GitHub-க்கு push செய்கிறது
pulling"Pulling..."தொடக்க ஒத்திசைவு, அல்லது push நிராகரிக்கப்பட்டு முதலில் pull செய்கிறோம்
syncing"Syncing..."முரண்பாடு தீர்வுக்குப் பிறகு rebase-ஐ முடிக்கிறது
synced"Synced · just now"இப்போது முடிந்த வெற்றி; 5 விநாடிகளுக்குக் காட்டப்பட்டு, பின்னர் idle-க்குத் திரும்பும்
conflict"Sync conflict"உள்ளூர் மற்றும் தொலைநிலை இரண்டும் ஒரே கோப்பைத் திருத்தின. UI முரண்பாடு தீர்வு ஓட்டத்தை வெளிப்படுத்துகிறது.
error"Sync error"ஒரு non-network, non-conflict தோல்வி (எ.கா. git தோல்வி). 5 முறை வரை exponential backoff உடன் தானாக-மீண்டும் முயற்சி.
offline"Offline"நெட்வொர்க் அடைய முடியவில்லை. அடுத்த கோப்பு மாற்றத்தில் அல்லது 60 விநாடிகளுக்குப் பிறகு மீண்டும் முயற்சிக்கும்.
timeout"Sync timed out"ஒரு git கட்டளை 60 விநாடிகளுக்கு மேல் எடுத்தது (கீழே ஒத்திசைவு டைம்அவுட் பாதுகாப்பு பார்க்கவும்)
token-expired"Re-authorize"OAuth புதுப்பிப்பு தோல்வியடைந்தது மற்றும் பயனர் கைமுறையாக மீண்டும்-அங்கீகரிக்க வேண்டும்
installing-app"Installing GitHub App..."பயனர் தங்கள் உலாவியில் GitHub App நிறுவு படியை முடிக்க காத்திருக்கிறது
creating-repo"Creating repository..."அமைப்பு ஓட்டம் GitHub repo-ஐ உருவாக்கி ஆரம்ப commit-ஐ push செய்கிறது

நிலை பட்டி ஒரு spinner-ஐ காட்டினால், அது சாதாரண பின்னணி செயல்பாடு. அது amber அல்லது சிவப்பு என்றால், கீழே உள்ள சிக்கல்தீர்வு பிரிவைப் பார்க்கவும்.


OAuth தானியங்கி-புதுப்பிப்பு

GitHub Apps ஒவ்வொரு 8 மணி நேரத்திற்கும் காலாவதியாகும் பயனர் access டோக்கன்களையும், 6 மாதங்களுக்கு செல்லுபடியாகும் refresh டோக்கனையும் வழங்குகின்றன. SeaMeet இதை உங்களுக்காக நிர்வகிக்கிறது, எனவே நீங்கள் கிட்டத்தட்ட எப்போதும் இதைப் பற்றி சிந்திக்க வேண்டியதில்லை.

இது எவ்வாறு செயல்படுகிறது:

  1. SeaMeet push அல்லது pull செய்யப் போகும்போது, ​​SyncManager._refreshTokenIfNeeded() தற்போதைய டோக்கன் அடுத்த 5 நிமிடங்களுக்குள் காலாவதியாகிறதா என்று சரிபார்க்கிறது.
  2. ஆம் என்றால், சேமிக்கப்பட்ட refresh டோக்கனுடன் SeaMeet GitHub-இன் /login/oauth/access_token endpoint-ஐ அழைக்கிறது. GitHub ஒரு புதிய access டோக்கனைத் திருப்பித் தந்து refresh டோக்கனை சுழற்றுகிறது. SeaMeet இரண்டையும் வட்டில் உள்ள மறையாக்கப்பட்ட டோக்கன் கோப்பிற்குத் திருப்பி எழுதுகிறது.
  3. Git கட்டளை பின்னர் புதிதாக-புதுப்பிக்கப்பட்ட டோக்கனுடன் இயங்குகிறது. திரையில் எதையும் நீங்கள் காண மாட்டீர்கள் — முழு புதுப்பிப்பும் ஒரு விநாடிக்குக் கீழே ஆகும்.

நிலையற்ற தோல்வி கையாளுதல்: நெட்வொர்க் நிலையற்றதாக இருப்பதால் அல்லது GitHub ஒரு 5xx-ஐ திருப்பித் தந்ததால் (ஒரு REFRESH_NETWORK_ERROR) புதுப்பிப்பு அழைப்பு தோல்வியடைந்தால், SeaMeet ஏற்கனவே உள்ள டோக்கனை தூக்கி எறியாது. அதற்கு பதிலாக ஒத்திசைவு offline நிலைக்குச் சென்று பின்னர் மீண்டும் முயற்சிக்கிறது. ஏற்கனவே உள்ள டோக்கன் இன்னும் பல நிமிடங்களுக்கு செல்லுபடியாக இருக்கலாம் என்பதால் இது முக்கியம் — ஒரு நிலையற்ற நெட்வொர்க் சறுக்கலில் அதை நிராகரிப்பது தேவையின்றி உங்களை ஒத்திசைவிலிருந்து வெளியேற்றும்.

ஒரே நேரத்தில் புதுப்பிப்பு ஒருங்கிணைப்பு: GitHub ஒவ்வொரு முறை நீங்கள் பயன்படுத்தும்போதும் refresh டோக்கனை சுழற்றுகிறது, எனவே இரண்டு ஒரே நேர புதுப்பிப்புகள் பந்தயம் போடும் மற்றும் ஒன்று மற்றொன்றை செல்லாததாக்கும். SeaMeet ஒரே நேர புதுப்பிப்பு அழைப்புகளை ஒற்றை in-flight Promise-ஆக (_refreshPromise) சுருக்குகிறது, எனவே தொடக்க-ஒத்திசைவு மற்றும் மீண்டும் முயற்சியுடன்-push சுழலும் டோக்கனுக்காக ஒருபோதும் சண்டையிடாது.

புதுப்பிப்பு உண்மையில் தோல்வியடையும்போது: GitHub REFRESH_TOKEN_EXPIRED-ஐ திருப்பித் தந்தால் — அதாவது 6-மாத refresh டோக்கன் காலாவதியாகிவிட்டது அல்லது ரத்து செய்யப்பட்டது — SeaMeet:

  1. மறையாக்கப்பட்ட டோக்கன் கோப்பை வட்டிலிருந்து நீக்குகிறது
  2. token-expired முடிவு நிலையில் நுழைகிறது
  3. ஒத்திசைவு அமைப்புகளில் ஒரு amber கார்டைக் காட்டுகிறது:
┌──────────────────────────────────────────────────────┐
│ ⚠  GitHub அங்கீகாரம் காலாவதியாகியுள்ளது. ஒத்திசைவை   │
│    மீண்டும் தொடர மீண்டும்-அங்கீகரிக்கவும்.             │
│                                                       │
│  [ ↻ GitHub-ஐ மீண்டும் அங்கீகரிக்கவும் ]              │
└──────────────────────────────────────────────────────┘

Re-authorize GitHub-ஐ கிளிக் செய்க. நீங்கள் OAuth ஓட்டத்தின் மூலம் திரும்ப அனுப்பப்படுகிறீர்கள் — ஆனால் GitHub App ஏற்கனவே நிறுவப்பட்டிருப்பதால், உறுதிப்படுத்துவது ஒரே கிளிக் மற்றும் சுமார் 10 விநாடிகளில் முடிந்தது. அடுத்த push-க்கு முன், SeaMeet உங்கள் உள்ளூர் git config-இல் இருந்து எந்த பழைய டோக்கனையும் நீக்குகிறது (பழைய டோக்கன் origin-இன் URL-இல் உட்பொதிக்கப்பட்டிருக்கலாம்), எனவே நீங்கள் ஒரு இறந்த credential-இல் loop செய்ய மாட்டீர்கள்.


ஒத்திசைவு டைம்அவுட் பாதுகாப்பு

ஒரு நெட்வொர்க் mid-transfer-இல் அமைதியாகும் போது Git கட்டளைகள் என்றென்றும் தொங்கலாம் — ஒரு TCP socket ஒரு பிழையை எழுப்பாமல் ஒரு half-open நிலையில் உட்காரலாம். SeaMeet ஒவ்வொரு Git push மற்றும் pull-ஐ ஒரு 60-விநாடி AbortController டைம்அவுட்-இல் சுற்றுகிறது.

ஒரு push அல்லது pull 60 விநாடிகளில் முடிக்கப்படாவிட்டால், SeaMeet:

  1. git subprocess-ஐ நிறுத்துகிறது
  2. timeout நிலையில் நுழைகிறது
  3. ஒத்திசைவு அமைப்புகளில் ஒரு amber கார்டைக் காட்டுகிறது:
┌──────────────────────────────────────────────────────┐
│ ⚠  ஒத்திசைவு டைம்அவுட்டானது. இது ஒரு நெட்வொர்க்       │
│    பிரச்சினை அல்லது காலாவதியான GitHub அங்கீகாரத்தால்  │
│    ஏற்படலாம்.                                        │
│                                                       │
│  [ ↻ ஒத்திசைவு மீண்டும் முயற்சி ]   [ GitHub-ஐ மீண்டும் அங்கீகரி ] │
└──────────────────────────────────────────────────────┘

Retry Sync commitNow-ஐ மீண்டும் இயக்குகிறது. உங்கள் நெட்வொர்க் சுருக்கமாக கைவிடப்பட்டது என்று நீங்கள் நினைத்தால் இது சரியான பொத்தான். Re-authorize GitHub OAuth ஓட்டத்தை மீண்டும் இயக்குகிறது; டைம்அவுட் தொடர்ந்து நிகழ்ந்தால் இதைக் கிளிக் செய்க, இது பொதுவாக நெட்வொர்க்கை விட உங்கள் டோக்கன்தான் பிரச்சினை என்று அர்த்தம்.

நிலை எதையும் கிளிக் செய்யாமலேயே சுமார் 30 விநாடிகளுக்குப் பிறகு தானாக idle-க்குத் திரும்புகிறது — அடுத்த கோப்பு மாற்றத்தில் ஒத்திசைவு மீண்டும் முயற்சிக்கும்.


முரண்பாடு தீர்வு

கடைசி ஒத்திசைவுக்குப் பிறகு இரண்டு சாதனங்களில் ஒரே கோப்பு திருத்தப்படும்போது ஒரு முரண்பாடு நிகழ்கிறது. உதாரணம்: உங்கள் மடிக்கணினியில் meetings/2026-06-03-standup.md-இல் நீங்கள் ஒரு பத்தியை எழுதினீர்கள், பின்னர் ஒரு நண்பரின் இயந்திரத்தில் அதே பத்தியைத் திருத்தினீர்கள். இரண்டாவது சாதனம் push செய்யும்போது, ​​வரலாறுகள் வேறுபடுவதால் GitHub push-ஐ நிராகரிக்கிறது.

SeaMeet இதை இவ்வாறு கையாள்கிறது:

  1. ஒரு rebase உடன் தொலைநிலை மாற்றங்களை pull செய்கிறது
  2. ஒன்றிணைப்பு முரண்பாடு குறிப்பான்களை கண்டறிகிறது
  3. conflict நிலையில் நுழைகிறது
  4. சைட்பார் நிலை பட்டியில் (இது கிளிக் செய்யக்கூடியதாக மாறுகிறது) மற்றும் ஒத்திசைவு அமைப்புகள் முரண்பாடு குழுவில் முரண்பாட்டை வெளிப்படுத்துகிறது

ஒத்திசைவு conflict-இல் இருக்கும்போது நிலை பட்டியைக் கிளிக் செய்வது Conflict Resolution Modal-ஐ திறக்கிறது:

┌──────────────────────────────────────────────────────────┐
│  ⚠  ஒத்திசைவு முரண்பாடு              1 / 2          [×]  │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  "2026-06-03-standup.md" மற்றொரு சாதனத்தில் மாற்றப்பட்டது.│
│                                                          │
│  ┌────────────────────────┐  ┌────────────────────────┐  │
│  │ ✎  கைமுறையாக திருத்து   │  │ ✦  Agent ஒன்றிணைப்பு    │  │
│  └────────────────────────┘  └────────────────────────┘  │
│                                                          │
└──────────────────────────────────────────────────────────┘

உங்களிடம் இரண்டு விருப்பங்கள் உள்ளன:

Edit manually — உங்கள் சிஸ்டத்தின் இயல்புநிலை எடிட்டரில் Git-இன் நிலையான <<<<<<< / ======= / >>>>>>> குறிப்பான்களுடன் முரண்பாடு கோப்பைத் திறக்கிறது. அவற்றைத் தீர்க்க கோப்பைத் திருத்தவும், சேமிக்கவும், பின்னர் SeaMeet-க்குத் திரும்பி Done-ஐ கிளிக் செய்யவும். SeaMeet தீர்க்கப்பட்ட கோப்பை stage செய்து rebase-ஐ தொடர்கிறது.

Agent merge (BYOK Pro மட்டும், AI Agent உள்ளமைக்கப்பட வேண்டும்) — இரண்டு பதிப்புகளையும் உங்கள் உள்ளமைக்கப்பட்ட AI Agent-க்கு (GitHub Copilot அல்லது Claude Code, அத்தியாயம் 36: BYOK அமைப்பு வழிகாட்டி பார்க்கவும்) அனுப்பி இரு பக்கங்களின் நோக்கத்தையும் வைத்திருக்கும் ஒன்றிணைக்கப்பட்ட பதிப்பை உருவாக்க கேட்கிறது. முகவரின் வெளியீடு தானாக stage செய்யப்படுகிறது; rebase முடிக்கும்போது நீங்கள் ஒரு "Finishing sync..." spinner-ஐ பார்ப்பீர்கள்.

ஒரே நேரத்தில் பல முரண்பாடுகள் இருந்தால், modal ஒரு எண்ணியை (1 / 2, 2 / 2) காட்டுகிறது மற்றும் ஒத்திசைவு அமைப்புகள் முரண்பாடு குழுவில் chevron arrows-ஐ காட்டுகிறது, எனவே நீங்கள் ஒவ்வொன்றாக அவற்றின் வழியாக செல்லலாம்.

"Keep mine" / "Keep theirs" / "Keep both" விருப்பங்கள் நீங்கள் கைமுறை எடிட்டருக்குள் இருக்கும்போது இயற்கையான தேர்வுகளாக வருகின்றன: குறிப்பான்களுக்கு இடையே உங்கள் பதிப்பின் உரையை மட்டும் விட்டுவிடுங்கள், தொலைநிலை பதிப்பின் உரையை மட்டும், அல்லது இரண்டையும் இடைக்கணித்தல். Agent merge பொத்தான் திறம்பட "keep both, intelligently" செய்கிறது.

நீங்கள் ஒரு தவறு செய்தால் என்ன? ஒத்திசைவு முரண்பாடுகள் அழிக்காதவை. Git அசல் "ours" மற்றும் "theirs" உள்ளடக்கத்தை index-இல் வைத்திருக்கிறது, மற்றும் getConflictVersions(filePath) தீர்வின் போது எந்த நேரத்திலும் எதையும் மீட்டெடுக்க முடியும். நீங்கள் தற்செயலாக வேலையை இழக்க மாட்டீர்கள்.


ஒத்திசைவு அமைப்புகள் குழு

நீங்கள் இணைக்கப்பட்டவுடன், ஒத்திசைவு அமைப்புகள் (Settings → Sync) ஒரே திரையில் அனைத்தையும் ஒரே இடத்தில் வழங்குகிறது:

┌─────────────────────────────────────────────────────────────┐
│  ✓ ஒத்திசைவு & காப்புப்பிரதி                                │
│  உங்கள் குறிப்புகள் மற்றும் wiki தானாக GitHub-க்கு ஒத்திசைக்கப்படுகின்றன. │
│  ஆடியோ பதிவுகள், வீடியோ பதிவுகள் மற்றும் ஸ்கிரீன்ஷாட்கள்    │
│  ஒத்திசைக்கப்படவில்லை.                                       │
├─────────────────────────────────────────────────────────────┤
│  ⓘ  https://github.com/you/seameet-work-notes                │
│  🕒 கடைசி ஒத்திசைவு: 4 நிமிடங்களுக்கு முன்                  │
├─────────────────────────────────────────────────────────────┤
│  Auto-sync                                       [ ON  ◉ ]  │
│  Sync interval                                  [ 5 min ▾ ] │
│  Branch                                              main   │
│  Last synced                                  4 minutes ago │
├─────────────────────────────────────────────────────────────┤
│  Auto-sync on changes                            [ ON  ◉ ]  │
│  Sync on startup                                 [ ON  ◉ ]  │
├─────────────────────────────────────────────────────────────┤
│  [ ⤓ இப்போதே ஒத்திசை ]                                       │
├─────────────────────────────────────────────────────────────┤
│  [ ↗ GitHub-இல் காண்க ]    [ துண்டி ]                        │
└─────────────────────────────────────────────────────────────┘

கட்டுப்பாடுகள், மேலிருந்து கீழே:

  • Auto-sync — பின்னணி commit டைமருக்கான முதன்மை நிலைமாற்றி. அணைக்கப்பட்டால், நீங்கள் Sync Now-ஐ கிளிக் செய்யும்போது மட்டுமே SeaMeet commit செய்கிறது.
  • Sync interval — commit டைமர் எவ்வளவு அடிக்கடி தீப்பற்றுகிறது. தேர்வுகள் 1 / 5 / 10 / 30 நிமிடங்கள். இயல்பு 5 நிமிடங்கள். ஒரு 1-நிமிட இடைவெளி செயலில் உள்ள குறிப்பு-எடுத்தலுக்கு சரி; 30 நிமிடங்கள் குறைந்த-திருத்த பணியிடங்களுக்கு நல்லது, அங்கு நீங்கள் commit-களை batch செய்ய விரும்புகிறீர்கள்.
  • Branch — SeaMeet ஒத்திசைக்கும் Git கிளை. கிட்டத்தட்ட எப்போதும் main. UI-இல் வாசிப்பு-மட்டும்.
  • Last synced — கடைசி வெற்றிகரமான push-இன் relative timestamp.
  • Auto-sync on changes — இயக்கப்பட்டால், ஒவ்வொரு உள்ளூர் commit-க்குப் பிறகு உடனடியாக push-கள் நடக்கும் (பொதுவான வழக்கு). அணைக்கப்பட்டால், SeaMeet உள்ளூரில் commit செய்கிறது ஆனால் நீங்கள் Sync Now-ஐ கிளிக் செய்யும்போது மட்டுமே push செய்கிறது. நீங்கள் push-களை batch செய்ய விரும்பினால் பயனுள்ளது (எ.கா. ஒரு அளவீட்டு இணைப்பில்).
  • Sync on startup — இயக்கப்பட்டால், பயன்பாடு துவங்கும் தருணத்தில் SeaMeet GitHub-இலிருந்து pull செய்கிறது. மிகவும் மெதுவான இணைப்பு இருந்தாலன்றி பரிந்துரைக்கப்படுகிறது.
  • Sync Now — உடனடி commit-and-push சுழற்சியை வலியுறுத்து. டைமருக்காக காத்திருக்காது. உங்கள் மடிக்கணினியை மூடுவதற்கு முன் பயனுள்ளது.
  • View on GitHub — repo-ஐ உங்கள் உலாவியில் திறக்கிறது.
  • Disconnect — சேமிக்கப்பட்ட OAuth டோக்கனை அழிக்கிறது, மறையாக்கப்பட்ட டோக்கன் கோப்பை நீக்குகிறது, மற்றும் உங்கள் உள்ளூர் Git repo-விலிருந்து origin-ஐ அகற்றுகிறது. உங்கள் உள்ளூர் Markdown கோப்புகள் மற்றும் Git வரலாறு தொடப்படவில்லை — GitHub-க்கான இணைப்பு மட்டுமே துண்டிக்கப்படுகிறது.

எது ஒத்திசைக்கப்படுகிறது (மற்றும் எது இல்லை)

இது பகுதி இண்டெக்ஸ்-இல் ஆவணப்படுத்தப்பட்டுள்ளது, ஆனால் அதை இங்கே மீண்டும் கூறுவது மதிப்புள்ளது:

ஒத்திசைக்கப்படுகிறதுஒத்திசைக்கப்படவில்லை
குறிப்புகள் (.md கோப்புகள்)ஆடியோ பதிவுகள் (.webm, .mp3)
Wiki பக்கங்கள் (.md கோப்புகள்)வீடியோ பதிவுகள் (.webm, .mp4)
பதிவு manifests (metadata JSON)ஸ்கிரீன்ஷாட்கள் (.png, .jpg)
AI சுருக்கங்கள் மற்றும் ஒலிப்பெயர்ப்புகள்Cache செய்யப்பட்ட AI உருவாக்கங்கள்
Wikilink வரைபடம்பயன்பாட்டு அமைப்புகள்
.gitignoreஎடிட்டர் scratch நிலை

SeaMeet எழுதும் .gitignore அனைத்து பெரிய பைனரி வகைகளையும் விலக்குகிறது. இது வேண்டுமென்றே: GitHub-இன் இலவச தனிப்பட்ட repo-கள் 1 GB-இல் வரம்பு, மற்றும் ஒரு 30-நிமிட வீடியோ அதை மட்டும் சாப்பிடும். SeaMeet ஊடகங்களை உங்கள் உள்ளூர் வட்டில் வைத்திருக்கிறது மற்றும் இலகுரக Markdown-ஐ மட்டுமே ஒத்திசைக்கிறது.

நீங்கள் முழு ஊடக ஒத்திசைவை விரும்பினால், அது Sync Pro அடுக்கு — அத்தியாயம் 35 பார்க்கவும்.


சிக்கல்தீர்வு

Set Up GitHub Sync-ஐ கிளிக் செய்த உடனேயே "அங்கீகாரம் தோல்வியடைந்தது"

காரணங்கள் மற்றும் சரிசெய்தல்கள்:

  • Pop-up தடுப்பான் — உலாவி சாளரம் எதுவும் திறக்கவில்லை என்றால், உங்கள் OS அல்லது உலாவி தொடக்கத்தை தடுத்திருக்கலாம். Set Up GitHub Sync-ஐ மீண்டும் கிளிக் செய்து எந்த pop-up prompts-ஐயும் உறுதிப்படுத்தவும்.
  • நீங்கள் GitHub App அனுமதிகளை மறுத்தீர்கள் — ஓட்டத்தின் வழியாக திரும்பிச் சென்று contents: write + administration: write scopes-ஐ ஏற்றுக்கொள்ளவும். administration: write இல்லாமல் SeaMeet உங்களுக்காக repo-ஐ உருவாக்க முடியாது.
  • State mismatch error — அதே OAuth ஓட்டத்தில் race செய்யக்கூடிய மற்ற SeaMeet சாளரங்களை மூடி, பின்னர் மீண்டும் முயற்சிக்கவும்.

அமைப்பின் போது "Repo permissions" பிழை

பிழை "GitHub App has 'contents: read' permission, but needs 'contents: write'." போல படிக்கிறது. இதன் பொருள் நீங்கள் App-இன் பழைய பதிப்பை நிறுவியுள்ளீர்கள்.

சரிசெய்தல்:

  1. github.com/settings/installations திறக்கவும்
  2. பட்டியலில் SeaMeet-ஐக் கண்டுபிடித்து Configure-ஐ கிளிக் செய்க
  3. Repository permissions-இன் கீழ், Contents மற்றும் Administration-ஐ Read and write-ஆக மாற்றவும்
  4. சேமி, பின்னர் app-ஐ uninstall and reinstall செய்க — reinstall-இல் மட்டுமே GitHub புதிய அனுமதிகளை பயன்படுத்துகிறது
  5. SeaMeet-இல் Set Up GitHub Sync-ஐ மீண்டும் இயக்கவும்

"GitHub-ஐ அடைய முடியவில்லை" / ஒத்திசைவு "Offline"-இல் சிக்கியுள்ளது

நெட்வொர்க் தோல்வி. SeaMeet தானாக மீண்டும் முயற்சிக்கும்:

  • நீங்கள் ஏதேனும் கோப்பு மாற்றம் செய்தால் (உடனடி மீண்டும் முயற்சி முயற்சியைத் தூண்டுகிறது)
  • கடைசி மீண்டும் முயற்சியிலிருந்து 60 விநாடிகள் கடந்தால்

உங்கள் நெட்வொர்க் திரும்பியுள்ளது மற்றும் ஒத்திசைவு இன்னும் இரண்டு நிமிடங்களுக்குப் பிறகு Offline-ஆகக் காட்டினால்:

  1. மீண்டும் முயற்சியை வலியுறுத்த Sync Now-ஐ கிளிக் செய்க
  2. அது டைம்அவுட்டானால்: உங்கள் ஃபயர்வால் github.com-ஐ தடுக்கவில்லை என்று சரிபார்க்கவும்
  3. கடைசி முயற்சியாக, SeaMeet-ஐ மறுதொடக்கம் செய்க — தொடக்க ஒத்திசைவு துவக்கத்தில் தீப்பற்றும்

ஒத்திசைவு "Pending"-இல் சிக்கியுள்ளது

இது வழக்கமாக auto-commit டைமர் இன்னும் தீப்பற்றவில்லை என்று அர்த்தம். இயல்பாக இது ஒவ்வொரு 5 நிமிடங்களுக்கும் தீப்பற்றுகிறது. காத்திருக்க விரும்பவில்லையா? Sync Now-ஐ கிளிக் செய்க.

Sync Now ஒத்திசைவை Pending-ஐ தாண்டி நகர்த்தவில்லை என்றால், சரிபார்க்கவும்:

  • நீங்கள் ஒத்திசைவை உள்ளடக்கிய பில்லிங் அடுக்கில் இருக்கிறீர்களா? ஒத்திசைவு அமைப்புகளைத் திறக்கவும் — நீங்கள் subscribe பேனரைப் பார்த்தால், உரிமை அடுக்கில் ஒத்திசைவு முடக்கப்பட்டுள்ளது.
  • Markdown மரத்திற்கு வெளியே commit செய்யப்படாத மாற்றங்கள் உள்ளனவா? _pendingChanges காலியாக இல்லாதபோது மட்டுமே auto-commit டைமர் தீப்பற்றுகிறது.

"நான் token-expired கார்டைப் பார்க்கிறேன்"

இது OAuth புதுப்பிப்பு வாழ்க்கைச் சுழற்சியின் எதிர்பார்க்கப்பட்ட முடிவு — உங்கள் 6-மாத refresh டோக்கன் காலாவதியானது, அல்லது நீங்கள் GitHub App-ஐ ரத்து செய்தீர்கள், அல்லது உங்கள் GitHub கடவுச்சொல்லை மாற்றினீர்கள் (இது அனைத்து OAuth டோக்கன்களையும் செல்லாததாக்குகிறது).

சரிசெய்தல்: கார்டில் Re-authorize GitHub-ஐ கிளிக் செய்க. ஓட்டம் ஆரம்ப அமைப்பின் அதே, ஆனால் GitHub App நிறுவு படியைத் தவிர்க்கிறது (நீங்கள் ஏற்கனவே நிறுவியுள்ளீர்கள்). சுமார் 10 விநாடிகள் ஆகும்.

முரண்பாடு தீர்வு குழு மூடவில்லை

பட்டியலில் உள்ள அனைத்து முரண்பாடுகளும் தீர்க்கப்பட்டவுடன் மட்டுமே குழு மூடுகிறது. எண்ணியை (1 / 3) பார்த்தால், மீதமுள்ள கோப்புகளின் வழியாக செல்ல ஒத்திசைவு அமைப்புகள் முரண்பாடு குழுவில் chevron arrows-ஐப் பயன்படுத்தவும். ஒவ்வொன்றுக்கும் ஒரு வெளிப்படையான தீர்வு தேவை (கைமுறை திருத்தம் + Done, அல்லது Agent merge).

குழு முரண்பாடுகள் உள்ளன என்று வலியுறுத்தினாலும் உங்கள் கோப்புகளில் குறிப்பான்கள் எதையும் காணவில்லை என்றால், Sync Now-ஐ கிளிக் செய்க — அடுத்த வெற்றிகரமான ஒத்திசைவு முயற்சியில் ஒரு பழைய conflict நிலை அழிக்கப்படும்.

"Push rejected" loops

ஒத்திசைவு pushing மற்றும் pulling இடையே மீண்டும் மீண்டும் மாறினால், தொலைநிலை தொடர்ந்து முன்னேறுவதால் GitHub உங்கள் push-களை நிராகரிக்கிறது. இது நிகழலாம் என்றால்:

  • அதே repo-வுக்கு எதிராக மற்றொரு SeaMeet நிகழ்வு இயங்குகிறது மற்றும் இது பிடிக்க முடியும் என்பதை விட வேகமாக push செய்கிறது — மற்ற நிகழ்வை மூடவும்.
  • ஒருவர் (அல்லது சில கருவி) SeaMeet-க்கு வெளியே GitHub repo-வுக்கு commit செய்கிறது — உங்கள் உள்ளூர் clone பிடிக்கும் வரை வெளிப்புற கருவியை இடைநிறுத்தவும்.

பாதுகாப்பு குறிப்புகள்

OAuth டோக்கன் எங்கே சேமிக்கப்படுகிறது: Electron-இன் safeStorage API வழியாக உங்கள் OS keychain-இல். Windows-இல் அது DPAPI, macOS-இல் அது Keychain Services, Linux-இல் அது libsecret. மறையாக்கப்பட்ட blob கோப்பு முறை 0o600 உடன் <userData>/github-token.enc-க்கு எழுதப்படுகிறது. கோப்பு access டோக்கன், refresh டோக்கன், காலாவதி timestamp மற்றும் GitHub App-இன் client ID, client secret, மற்றும் slug-ஐ வைத்திருக்கிறது.

argv-இல் என்ன சேமிக்கப்படவில்லை: OAuth டோக்கன் ஒருபோதும் git-க்கு -c http.extraHeader=... argument-ஆக அனுப்பப்படவில்லை, ஏனெனில் argv ps aux வழியாக மற்ற பயனர்களுக்குக் கண்ணுக்குத் தெரியும். அதற்கு பதிலாக Authorization header GIT_CONFIG_PARAMETERS environment variable-வழியாக இடப்படுகிறது, இது செயல்முறைக்கு தனிப்பட்டது. அதே இயந்திரத்தில் உள்ள மற்ற பயனர்கள் உங்கள் டோக்கனைப் பார்க்க முடியாது.

repo-வில் வட்டில் என்ன முடிகிறது: வெற்று Markdown கோப்புகள். டோக்கன்கள் இல்லை, ரகசியங்கள் இல்லை, credentials இல்லை. .gitignore ஊடக கோப்புகளை விலக்குகிறது, ஆனால் குறிப்பு உடல்களில் ரகசியங்களை ஒட்டுவதை இன்னும் நீங்கள் தவிர்க்க வேண்டும் — அவை ஒத்திசைக்கப்படும்.

அணுகலை ரத்து செய்தல்: SeaMeet-இன் ஒரு repo-வுக்கான அணுகலை உடனடியாக துண்டிக்க, github.com/settings/installations-இல் SeaMeet GitHub App-ஐ uninstall செய்க. அடுத்த ஒத்திசைவு முயற்சி token-expired-உடன் தோல்வியடையும் மற்றும் SeaMeet அதன் உள்ளூர் டோக்கனை அழிக்கும். உங்கள் உள்ளூர் குறிப்புகள் தொடப்படாது.


விரைவு குறிப்பு

┌─────────────────────────────────────────────────────────────┐
│                   GITHUB ஒத்திசைவு                          │
│                   விரைவு குறிப்பு                            │
├─────────────────────────────────────────────────────────────┤
│  ஒத்திசைவு அமைப்புகளைத் திற │ Settings → Sync                │
│  முதல் முறை அமைப்பு        │ "Set Up GitHub Sync"-ஐ கிளிக்  │
│  தேவையான scopes           │ contents: write, admin: write  │
│  Repo பெயரிடல்            │ ஒரு பணியிடத்திற்கு ஒரு தனிப்பட்ட repo │
├─────────────────────────────────────────────────────────────┤
│  இயல்பு ஒத்திசைவு இடைவெளி │ 5 நிமிடங்கள் (1 / 5 / 10 / 30)  │
│  ஒத்திசைவை வலியுறுத்து    │ "Sync Now" பொத்தான்            │
│  push-இல் Auto-sync       │ On (Sync Settings-இல் நிலைமாற்றி)│
│  தொடக்கத்தில் ஒத்திசைவு    │ On (Sync Settings-இல் நிலைமாற்றி)│
├─────────────────────────────────────────────────────────────┤
│  OAuth refresh margin    │ காலாவதிக்கு 5 நிமிடங்கள் முன்    │
│  Git கட்டளை டைம்அவுட்     │ 60 விநாடிகள் (AbortController) │
│  Auto-retry வரம்பு        │ 5 முயற்சிகள், exp. backoff      │
│  டோக்கன் சேமிப்பு         │ OS keychain (safeStorage)      │
├─────────────────────────────────────────────────────────────┤
│  முரண்பாடு UI            │ முரண்பாட்டில் இருக்கும்போது நிலை பட்டியை கிளிக் │
│  கைமுறை தீர்வு           │ குறிப்பான்களை திருத்து → Done   │
│  Agent merge             │ BYOK Pro + AI Agent உள்ளமைக்கப்பட்டது │
├─────────────────────────────────────────────────────────────┤
│  துண்டி                  │ Sync Settings → Disconnect     │
│  GitHub-இலிருந்து ரத்து   │ github.com/settings/installations │
│  repo-ஐ பார்            │ "View on GitHub" இணைப்பு        │
└─────────────────────────────────────────────────────────────┘

கடைசியாக புதுப்பிக்கப்பட்டது: 2026-06-04

அத்தியாயம் 37: GitHub Copilot வழங்குநர் | (கையேட்டின் முடிவு — குறியீட்டிற்குத் திரும்பவும்)

Published: