Git/C3/Working-with-Remote-Repositories/Assamese

From Script | Spoken-Tutorial
Jump to: navigation, search
Time
Narration
00:01 ওৱৰকিং ওইথ ৰিম’ত ৰেপ’জিত’ৰিচৰ (Working with Remote Repositories) স্প’কেন টিউট'ৰিয়েল (spoken tutorial) টোলৈ স্বাগতম
00:06 এই টিউট’ৰিয়েলটোত, আমি শিকিম - ৰিম’ত ৰেপ’জিত’ৰি (Remote repository) কি হয় আৰু
00:12 ৰিম’ত ৰেপ’জিত’ৰিটোলৈ (Remote repository) কেনেকৈ দাতা চিংক্ৰ’নাইজ কৰা হয়
00:16 এই টিউট’ৰিয়েলটোৰ বাবে, মই ব্যৱ্হাৰ কৰিছো উবুন্তো (Ubuntu) লিনাক্স (Linux) 14.04
00:22 গিত (Git) 2.3.2
00:25 gedit টেকস্ত (Text) এদিতৰ (Editor) আৰু
00:28 ফায়াৰফক্স (Firefox) ওৱেব (web) ব্ৰ’জাৰ (browser)
00:30 আপুনি আপোনাৰ পচন্দৰ যিকোনো এদিতৰ আৰু ওৱেব ব্ৰ’জাৰ ব্যৱ্হাৰ কৰিব পাৰে
00:36 এই টিউট’ৰিয়েলটোৰ বাবে, আপোনাক এটা কামকৰা ইন্তাৰনেত (Internet) সংযোগ লাগিব
00:41 আপোনাৰ লগতে গিত (Git) কমান্ডচৰ মূল জ্ঞান থাকিব লাগিব
00:46 যদি নাই, সঙ্গত গিত (Git) টিউট’ৰিয়েলচৰ বাবে, অনুগ্ৰহ কৰি প্ৰদত্ত লিংকটো চাওঁক
00:52 প্ৰথমে, আহক আমি বুজো ৰিম’ত (Remote) ৰেপ’জিত’ৰি (repository) এটা কি হয়
00:56 এটা ৰেপ’জিত’ৰি (repository) যি ইন্টাৰনেত বা যিকোনো নেতওৱৰ্কত হ’ষ্টেদ হয় তাক কোৱা হয় ৰিম’ত (Remote) ৰেপ’জিত’ৰি (repository)
01:04 এই কেন্দ্রীভূত কৰা ৰেপ’জিত’ৰিটো (repository) ব্যৱ্হাৰ কৰি, মানুহে প্ৰকল্প এটাত পৃথিবীৰ যিকোনো ঠাইৰ পৰা যিকোনো সময়ত সহযোগ কৰিব পাৰে
01:13 ধৰক, উদাহৰণৰ বাবে, তিনিজন ইউজাৰ আছে যি একেটা ৰেপ’জিত’ৰিত (repository) সন্মিলিতভাবে কাম কৰিব বিচাৰে
01:21 গিতে (Git) তেওঁলোকৰ ল’কেল চিষ্টেমলৈ ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) ক’পি এটা ল’বলৈ অনুমতি দিয়ে
01:28 ইয়াক কৰা হ’ব ক্ল’ন (clone) কমান্দ ব্যৱ্হাৰ কৰি
01:31 তেতিয়া তেওঁলোকে ল’কেল ৰেপ’জিত’ৰিটোৰ (repository) সৈতে অফলাইন কাম কৰিব পাৰে
01:36 এবাৰ কামটো সন্তুষ্ট হ’লে, তেওঁলোকে ইয়াক প্ৰধান ৰেপ’জিত’ৰিটোলৈ (repository) চিংক্ৰ’নাইজ কৰিব লাগিব
01:43 ইয়াক কৰা হ’ব পুচ (Push) আৰু পুল (pull) কমান্দচ ব্যৱ্হাৰ কৰি
01:48 আপুনি সম্পূৰ্ণ প্ৰচেচটো এই টিউট’ৰিয়েলটোৰ শেষত বুজিব
01:53 প্ৰথমে আমি গিতহাব ৰেপ’জিত’ৰিটো (GitHub repository) খুলিম যাক আমি আগতে বনাইছিলো
01:59 সোফালে, আমি এই ৰেপ’জিত’ৰিটোৰ URL টো দেখিছো
02:05 আহক এই URL টো ক’পি কৰো
02:08 আমি এই ৰেপ’জিত’ৰিটোৰ (repository) ক’পি এটা বনাম URL টো ব্যৱ্হাৰ কৰি ল’কেল ৰেপ’জিত’ৰি (repository) এটা নিৰ্মান কৰিবলৈ
02:16 আহক টাৰ্মিনেলটো (terminal) খুলো
02:18 আহক আমি এতিয়া বুজো কেনেকৈ দুজন ইউজাৰে একেটা ৰিম’ত (Remote) ৰেপ’জিত’ৰিত (repository) কাম কৰিব পাৰে
02:24 ইয়াৰ বাবে, মই ইতিমধ্যে User1 আৰু User2 নামৰ দুটা দাইৰেক্তৰী বনালো মোৰ দেচকটপত (Desktop)
02:33 অনুগ্ৰহ কৰি আপোনাৰ দেচকটপতো (Desktop) তেনে কৰক
02:36 একেটা টাৰ্মিনেলত (terminal), মই দাইৰেক্তৰীচ খুলিম দুটা বেলেগ টেবত
02:43 প্ৰথম টেবটোত, লিখক cd স্পেচ (space) User1
02:49 দ্বিতীয় টেবটো খুলিবলৈ, ফাইল মেনুত (File menu) টিপক আৰু অপেন টেবক (Open Tab) বাচক
02:55 দ্বিতীয় টেবটোত, লিখক cd User2
03:00 আহক আমি User1 টেবটোলৈ যাওঁ
03:03 এতিয়া আহক আমি ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) ক’পি এটা বনাওঁ
03:08 লিখক গিত স্পেছ ক্ল’ন (git space clone) আৰু তেতিয়া ক’পি কৰা URLটো পেষ্ট কৰক স্পেছ আৰু এই কমান্দটোৰ শেষত দত এটা লিখক
03:17 দতে (Dot) সূচায় যে আমি ৰেপ’জিত’ৰিটো (repository) একেটা দাইৰেক্তৰীৰ (directory) ভিতৰত ক’পি কৰিম যি হৈছে User1
03:25 অন্যহাতে, ই ৰেপ’জিত’ৰিটোৰ (repository) সৈতে ষ্ট’ৰিজ (stories) নামৰ নতুন দাইৰেক্তৰী (directory) এটা বনাব
03:31 এতিয়া এন্টাৰ (Enter) টিপক
03:33 ক্ল’ন (clone) কমান্দটোৱে সম্পূৰ্ণ মধ্য ফ’ল্দাৰটো ক’পি কৰিব আৰু ইয়াক এটা ল’কেল ৰেপ’জিত’ৰি (repository) বনাব
03:40 ls লিখক । আপুনি দেখিছে যে ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) উপাদান ইয়াত ক’পি হৈছে
03:48 পাছত, মই এই ৰেপ’জিত’ৰিটোৰ (repository) ইউজাৰ নেম (user name) আৰু email id সলাম ভালদৰে বুজিবলৈ
03:55 মই ইতিমধ্যে আৰু দুটা গিতহাব ইউজাৰচ (GitHub users) বনালো - priya-spoken1 আৰু kaushik-spoken - বৰ্ণনাৰ উদ্দেশ্যে
04:04 মই সিহঁতক ইয়াত ব্যৱ্হাৰ কৰিম
04:14 আহক আমি গিত লগটো (Git log) চাওঁ
04:16 আপুনি দেখিছে একে কমিতচ (commits) ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository)
04:21 একেদৰে, মই দ্বিতীয় টেবটোত User2 দাইৰেক্তৰীৰ ভিতৰত ৰেপ’জিত’ৰিটো (repository) ক্ল’ন (clone) কৰিম
04:28 ইয়াতো লগতে মই ইউজাৰ নেম (user name) আৰু email id সলাম আগতে User1ৰ বাবে কৰাৰ দৰে
04:35 পাছত, আহক আমি বুজো এই ইউজাৰসকলে কেনেদৰে ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোত (repository) কাম কৰিব
04:41 ধৰক, User1lion-and-mouse.html নামৰ ফাইল এটাত কাম কৰিব
04:48 ফাইলটো নিৰ্মান কৰিবলৈ, লিখক gedit lion-and-mouse.html
04:54 মই কিছু টেকস্ত ক’পি আৰু পেষ্ট কৰিম এই ফাইলটোত, মোৰ ৰাইতাৰ দকোমেন্তটোৰ ( Writer document) পৰা, যাক মই আগতে ছেভ কৰিছিলো
05:02 একেদৰে, আপুনি কিছু বিষয়বস্তু যোগ কৰিব পাৰে আপোনাৰ ফাইলটোত
05:06 আহক ফাইলটো ষ্টেজিং এৰিয়াটোত (staging area) যোগ কৰো
05:11 লিখক গিত (git) এদ (add) lion-and-mouse.html
05:17 পাছত আহক আমি নতুনকৈ যোগ কৰা ফাইলটো কমিত (commit) কৰো
05:21 লিখক গিত (git) কমিত (commit) হাইফেন (hyphen) m উৰ্দ্ধক’মাৰ ভিতৰত এদেদ (Added) lion-and-mouse.html
05:29 পাছত আমি ল’কেল ৰেপ’জিত’ৰিটো (repository) প্ৰধান ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) সৈতে চিংক্ৰ’নাইজ কৰিব লাগিব
05:35 ৰেপ’জিত’ৰিটো (repository) চিংক্ৰ’নাইজ কৰাৰ আগতে, আমি ৰিম’তচৰ (remotes) বিষয়ে শিকিম
05:40 ৰিম’ত (Remote) ৰেপ’জিত’ৰি (repository) এটাৰ URL টোক ৰিম’ত (Remote) কোৱা হয়
05:45 আমি URL টোক এটা নিকনেম দিব পাৰো
05:49 ই উপকাৰী হ’ব যেতিয়া আমি বহুতো ৰিম’ত (Remote) ৰেপ’জিত’ৰিত (repository) কাম কৰো
05:54 যেতিয়া আমি ৰেপ’জিত’ৰিটো (repository) চিংক্ৰ’নাইজ কৰো, আমি নিকনেমটো ব্যৱ্হাৰ কৰো, সম্পূৰ্ণ URLটো লিখাৰ পৰিবৰ্তে
06:01 ৰিম’ত (Remote) এটাৰ দিফল্ট নিকনেমটো সদায় অৰিজিন (origin) হয়
06:06 এতিয়া আহক আমি শিকো ৰিম’ত (Remote) এটা কেনেকৈ যোগ কৰা হয়
06:10 আমাৰ টাৰ্মিনেললৈ (terminal) ঘূৰি আহক
06:13 লিখক গিত ৰিম’ত (git remote) । আপুনি দেখিছে যে দিফল্ট ৰিম’ত (Remote) নামটো অৰিজিন (origin) হয়
06:20 পাছত আহক আমি চাওঁ ৰিম’তলৈ (Remote) কেনেকৈ নিকনেম এটা যোগ কৰা হয়
06:25 লিখক গিত (git) ৰিম’ত (remote) এদ (add) ষ্ট’ৰিজ (stories) আৰু ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) URLটো লিখক
06:32 ইয়াত মই ৰিম’তক (Remote) ষ্ট’ৰিজ (stories) নাম দিম যি হৈছে ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) নাম
06:38 এতিয়া এন্টাৰ (Enter) কী টিপক
06:41 পুনৰ ৰিম’ত (remote) লিষ্ট চাবলৈ, লিখক গিত ৰিম’ত (git remote)
06:46 আপুনি দেখিছে যে ৰিম’ত (remote) লিষ্টখনলৈ যোগ হৈছে
06:50 এতিয়া আমি ল’কেল ৰেপ’জিত’ৰিটো (repository) প্ৰধান ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) সৈতে চিংক্ৰ’নাইজ কৰিম
06:55 তাক কৰিবলৈ, লিখক গিত (git) পুচ (push) ষ্ট’ৰিজ (stories) মাষ্টাৰ (master)
07:00 ইয়াত ষ্ট’ৰিজ (stories) হৈছে ৰিম’ত (remote) নাম আৰু মাষ্টাৰ (master) হৈছে ব্ৰানচটো (branch) য’ত আমি পৰিবৰ্তনক আপদেত কৰো
07:07 এতিয়া এন্টাৰ (Enter) টিপক
07:09 মই priya-spoken1User1ৰ ইউজাৰনেম (username) হিচাবে লিখিম আৰু এন্টাৰ (Enter) টিপক
07:17 User1ৰ সঙ্গত পাচৱৰ্দ লিখক
07:21 মই এই ইউজাৰনেমটো আগতে বৰ্ণনাৰ উদ্দেশ্যে নিৰ্মান কৰিছিলো
07:27 অনুগ্ৰহ কৰি ইয়াত আপোনাৰ ইউজাৰনেম আৰু পাচৱৰ্দ ব্যৱ্হাৰ কৰক
07:31 ই এৰ’ৰ এটা দিয়ে আনেবল তু এক্সেচ (unable to access)
07:35 এই এৰ’ৰটো কিয় হ’ল? ইয়াৰ কাৰণটো হৈছে আমাৰ ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোলৈ (repository) এক্সেচ নাই
07:42 গতিকে এতিয়া, আহক আমি শিকো কনত্ৰিবিউতৰচক এক্সেচ পাৰ্মিচন কেনেকৈ দিয়া হয়
07:48 গিতহাব ৰেপ’জিত’ৰিটোলৈ (GitHub repository) ঘূৰি আহক
07:51 শেষৰ টেবত টিপক -চেতিংগচ (Settings) - ওপৰৰ পেনেলত
07:55 তেতিয়া বাওঁ ফালৰ বক্সত ক’লাব’ৰেতৰচ (Collaborators) লিংকত টিপক
08:00 নিশ্বিতকৰণৰ বাবে আপোনাৰ গিতহাব (GitHub) একাউন্টৰ পাচৱৰ্দ লিখক
08:04 ইয়াত টেকস্ত বক্সটোত, আমি সহযোগীৰ নাম যোগ কৰিব পাৰো
08:10 বুজিব যে যিকোনো লোকে এই গিতহাব ৰেপ’জিত’ৰিটো (GitHub repository) ক্ল’ন (clone) কৰিব পাৰে
08:15 কিন্তু আমি সহযোগী হিচাবে যোগ কৰা লোকে, ৰেপ’জিত’ৰিটোলৈ (repository) পুচ (push) কৰিব পাৰে
08:21 এতিয়া মই priya-spoken1 আৰু kaushik-spoken ইউজাৰ দুজনক যোগ কৰিম
08:27 আপুনি দেখিছে যে ইউজাৰ নেমতো লিষ্টেদ হৈছে যেতিয়া মই টেকস্ত বক্সটোত লিখিছো
08:33 এদ ক’লাব’ৰেতৰ (Add Collaborator) বুটামটোত টিপক ইউজাৰজনক সহযোগী হিচাবে যোগ কৰিবলৈ
08:38 মই লগতে আনজন ইউজাৰ kaushik-spokenক যোগ কৰিম
08:43 আপুনি ইয়াত যোগকৰা নামসমূহ লিষ্টেদ হোৱা দেখিছে
08:47 এতিয়া আমি ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোলৈ (repository) পুচ কৰিবলৈ চেষ্টা কৰিম
08:51 টাৰ্মিনেললৈ (terminal) ঘূৰি আহক
08:54 লিখক গিত (git) পুচ (push) ষ্ট’ৰিজ (stories) মাষ্টাৰ (master)
08:58 ইউজাৰজনৰ ইউজাৰনেম (username) আৰু পাচৱৰ্দ (password) দিয়ক যাৰ ৰেপ’জিত’ৰিটোলৈ (repository) এক্সেচ আছে
09:04 আপুনি দেখিছে যে আমি ইয়াক সফলভাবে পুচ কৰিলো
09:08 পাছত, আহক আমাৰ পৰিবৰ্তনখিনি আপদেত হৈছেনে নাই চাবলৈ আমি গিতহাব ৰেপ’জিত’ৰিটো (GitHub repository) পৰীক্ষা কৰো
09:14 গিতহাব ৰেপ’জিত’ৰিটোলৈ (GitHub repository) ঘূৰি আহক
09:17 ক’ড (Code) টেবত টিপক
09:20 আহক কমিত লিষ্ট (commit list) চাওঁ
09:23 আপুনি দেখিছে যে সহযোগীৰ কমিত (commit) ইয়াত লিষ্টেদ হৈছে
09:28 পাছত, আহক আমি শিকো User2 এ কেনেকৈ ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) সৈতে সহযোগ কৰিব পাৰে
09:34 টাৰ্মিনেললৈ (terminal) ঘূৰি আহক
09:37 ধৰক, User2friends.html নামৰ ফাইল এটাত কাম কৰি আছে
09:43 ফাইলটো বনাবলৈ, লিখক gedit friends.html
09:49 মই কিছু টেকস্ত ক’পি আৰু পেষ্ট কৰিম এই ফাইলটোত, মোৰ ৰাইতাৰ দকোমেন্তটোৰ ( Writer document) পৰা
09:54 একেদৰে, আপুনি কিছু বিষয়বস্তু যোগ কৰিব পাৰে আপোনাৰ ফাইলটোত
09:59 আহক ফাইলটো ষ্টেজিং এৰিয়াটোত (staging area) যোগ কৰো
10:03 পাছত আহক নতুনকৈ যোগ কৰা ফাইলটো কমিত (commit) কৰো
10:07 লিখক গিত (git) কমিত (commit) হাইফেন (hyphen) m উৰ্দ্ধক’মাৰ ভিতৰত এদেদ (Added) friends.html
10:15 পাছত আমি ল’কেল ৰেপ’জিত’ৰিটো (repository) প্ৰধান ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) সৈতে চিংক্ৰ’নাইজ কৰিব লাগিব
10:21 লিখক গিত (git) পুচ (push) অৰিজিন (origin) মাষ্টাৰ (master)
10:25 মনত ৰাখিব যে আমি এই ল’কেল ৰেপ’জিত’ৰিটোত (repository) ৰিম’ত (Remote) যোগ নকৰো
10:30 গতিকে ইয়াত আমি দিফল্ট ৰিম’ত (Remote) নাম অৰিজিন (origin) ব্যৱ্হাৰ কৰিছো
10:34 এতিয়া এন্টাৰ (Enter) টিপক
10:37 User2ৰ গিতহাব (GitHub) ইউজাৰনেম আৰু পাচৱৰ্দ লিখক
10:42 ই এটা এৰ’ৰ দিয়ে যি কয় ফেইলদ তু পুচ (failed to push)
10:46 লগতে, ই এৰ’ৰটোৰ বাবে কাৰণটো দেখুৱাই:ৰিম’তত কাম আছে যি আপোনাৰ ল’কেলি নাই
10:53 মনত ৰাখিব যে User1এ আগতে কমিত এটা পুচ কৰিছিলে
10:58 কিন্তু User2 ৰ ল’কেল ৰেপ’জিত’ৰিত User1ৰ কামখিনি নাই
11:04 ই লগতে এৰ’ৰটো সংশোধন কৰিবলৈ গিত পুল (git pull) কমান্দটো ৰান কৰিবলৈ পৰামৰ্শ এটা দিয়ে
11:10 গতিকে প্ৰথমে, আমি User1ৰ কামক পুল দাউন কৰিব লাগিব আৰু ইয়াক User2ৰ ল’কেল ৰেপ’জিত’ৰিত অন্তৰ্ভুক্ত কৰিব লাগিব । আহক এতিয়া তাক কৰো
11:21 লিখক গিত (git) পুল (pull) অৰিজিন (origin) মাষ্টাৰ (master)
11:25 প্ৰথমে ই ৰিম’ত (Remote) ৰেপ’জিত’ৰিটোৰ (repository) পৰা দাতাক আনিব তাৰপাছত ইয়াক ল’কেল ৰেপ’জিত’ৰিটোৰ সৈতে মাৰ্জ (merge) কৰিব
11:32 গতিকে ই মাৰ্জিংৰ (merging) বাবে মেচেজ এটা দিবলৈ এদিতৰ এটা খুলে
11:36 আহক একেটা মেচেজ ৰাখো আৰু Ctrl + X টিপি এদিতৰটো বন্ধ কৰো
11:42 এতিয়া পুনৰ, আমি দাতাটো পুচ কৰিবলৈ চেষ্টা কৰিম । লিখক গিত (git) পুচ (push) অৰিজিন (origin) মাষ্টাৰ (master)
11:50 User2ৰ ইউজাৰনেম (username) আৰু পাচৱৰ্দ (password) দিয়ক
11:54 আপুনি দেখিছে যে এতিয়া আমি সফলভাবে দাতাটো পুচ কৰিব পাৰিছো
11:59 পাছত আহক আমাৰ পৰিবৰ্তনখিনি আপদেত হৈছেনে নাই চাবলৈ আমি গিতহাব ৰেপ’জিত’ৰিটো (GitHub repository) পৰীক্ষা কৰো
12:05 গিতহাব ৰেপ’জিত’ৰিটোলৈ (GitHub repository) ঘূৰি আহক
12:08 ষ্ট’ৰিজ (Stories) নামৰ ৰেপ’জিত’ৰিটোত টিপক
12:12 আপুনি দেখিছে যে friends.html ফাইলটো এতিয়া ৰেপ’জিত’ৰিটোত যোগ হ’ল
12:18 আহক এতিয়া কমিত লিষ্ট (commit list) চাওঁ
12:21 আপুনি দেখিছে যে User2ৰ কমিত (commit) লগতে ইয়াত লিষ্টেদ হৈছে
12:26 ইয়াৰ সৈতে, আমি এই টিউট’ৰিয়েলটোৰ শেষ পালোহি
12:30 এই টিউট’ৰিয়েলটোত, আমি শিকিলো -
12:35 ৰিম’ত ৰেপ’জিত’ৰি (Remote repository) কি হয় আৰু
12:38 ৰিম’ত ৰেপ’জিত’ৰিটোলৈ (Remote repository) কেনেকৈ দাতা চিংক্ৰ’নাইজ কৰা হয়
12:42 এটা অনুশিলনী হিচাবে, User3 নামৰ আৰু এটা ইউজাৰ বনাওঁক
12:47 User3ৰ বাবে দাতা ক্ল’ন (Clone) কৰক
12:50 User3ৰ ল’কেল ৰেপ’জিত’ৰিটোত কাম কৰিবলৈ আৰম্ভ কৰক আৰু
12:54 User3ৰ পৰা দাতা পুচ কৰিবলৈ চেষ্টা কৰক
12:58 তলৰ সংযোজনত থকা কথাচিত্ৰটোৱে স্প’কেন টিউট’ৰিয়েল (Spoken Tutorial) প্ৰকল্পৰ মূলভাব দৰ্শায়
13:03 অনুগ্ৰহ কৰি ইয়াক দাউনল’দ কৰক আৰু চাওঁক
13:05 স্প’কেন টিউট’ৰিয়েল প্ৰকল্পৰ দলে কৰ্মশালা পাতে আৰু অনলাইন পৰীক্ষাত উত্তীৰ্ণ সকলক প্ৰমানপত্ৰ দিয়ে
13:12 অধিক জানিবলৈ, অনুগ্ৰহ কৰি আমালৈ লিখক
13:16 স্প’কেন টিউট’ৰিয়েল প্ৰকল্প NMEICT, MHRD, ভাৰত চৰকাৰৰ অৱদান
13:22 এই মিচনৰ বিষয়ে অধিক তথ্য তলৰ সংযোজনত উপলদ্ধ
13:27 মই মৌচুম হাজৰিকা । সংযোগ কৰাৰ বাবে ধন্যবাদ

Contributors and Content Editors

Mausamh9