Skip to content

Commit b025bf5

Browse files
authored
Merge pull request #333 from ajay-dhangar/new-update
Online Services Content is added
2 parents f74485a + bd5da12 commit b025bf5

22 files changed

+1941
-4
lines changed
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
title: "Fixing Git Clone Error: RPC Failed, HTTP/2 Stream Cancelled"
3+
authors: [ajay-dhangar]
4+
tags: ["Git", "GitHub", "Errors", "Cloning Repositories", "Fixes"]
5+
date: 2025-09-04 10:00:00
6+
description: "How to fix the 'RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)' error when cloning large Git repositories."
7+
draft: false
8+
---
9+
10+
In this post, I’ll show you how to fix the frustrating `RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)` error that can occur when cloning large Git repositories. If you've encountered this error, you're not alone! Let's dive into the causes and solutions.
11+
12+
<!-- truncate -->
13+
14+
![Git Clone Error](./git-clone-error.png)
15+
16+
## Introduction
17+
18+
The other day, I was trying to clone my GitHub repository, but I ran into a frustrating error.
19+
If you’ve ever seen something like this, you know how annoying it feels:
20+
21+
```bash
22+
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)
23+
error: 3547 bytes of body are still expected
24+
fetch-pack: unexpected disconnect while reading sideband packet
25+
fatal: early EOF
26+
fatal: fetch-pack: invalid index-pack output
27+
````
28+
29+
At first, I thought something was wrong with my Git setup. But after digging in, I realized the problem was with **large repository size, network limits, and Git’s default settings**.
30+
31+
In this blog, I’ll break down **why this happens** and the **step-by-step solutions** I tried to fix it.
32+
33+
---
34+
35+
## Why This Error Happens
36+
37+
This error usually shows up when:
38+
- Your repository is **very large** (hundreds of MBs or more).
39+
- Git’s default **HTTP buffer size is too small**.
40+
- The repo has **too many objects (commits, files, branches, blobs)**.
41+
- Network interruptions cause Git to cancel the fetch.
42+
43+
Basically, Git starts downloading your repo, but before finishing, the connection breaks and Git doesn’t know what to do with the incomplete data.
44+
45+
---
46+
47+
## Solutions That Worked
48+
49+
Here are the methods I tried to fix it:
50+
51+
### 1. Increase Git Buffer Size
52+
Git’s default HTTP buffer is small. Let’s make it bigger:
53+
54+
```bash
55+
git config --global http.postBuffer 524288000
56+
git config --global http.maxRequests 100
57+
git config --global http.version HTTP/1.1
58+
```
59+
60+
This allows Git to handle bigger repositories without choking.
61+
62+
---
63+
64+
### 2. Use a Shallow Clone (Fastest Fix)
65+
66+
If you only need the latest commit (not the full history):
67+
68+
```bash
69+
git clone --depth=1 https://github.com/ajay-dhangar/ajay-dhangar.github.io.git
70+
```
71+
72+
👉 This grabs the newest version quickly.
73+
If you later need full history:
74+
75+
```bash
76+
cd ajay-dhangar.github.io
77+
git fetch --unshallow
78+
```
79+
80+
This way, you start small and expand as needed.
81+
82+
---
83+
84+
### 3. Clone Only One Branch
85+
86+
If the repo has multiple branches, but you just want `main`:
87+
88+
```bash
89+
git clone --single-branch --branch main https://github.com/ajay-dhangar/ajay-dhangar.github.io.git
90+
```
91+
92+
This avoids fetching unnecessary data.
93+
94+
---
95+
96+
### 4. Switch to SSH
97+
98+
Sometimes HTTPS causes issues. If you have SSH keys set up:
99+
100+
```bash
101+
git clone [email protected]:ajay-dhangar/ajay-dhangar.github.io.git
102+
```
103+
104+
This is often more reliable for big repos.
105+
106+
---
107+
108+
### 5. Sparse Checkout (Download Only What You Need)
109+
110+
If you don’t need the whole repo, just a folder:
111+
112+
```bash
113+
git clone --filter=blob:none https://github.com/ajay-dhangar/ajay-dhangar.github.io.git
114+
cd ajay-dhangar.github.io
115+
git sparse-checkout init --cone
116+
git sparse-checkout set <folder-you-need>
117+
```
118+
119+
This keeps your local clone lightweight.
120+
121+
---
122+
123+
### 6. Use Git LFS for Large Files
124+
125+
If your repo has big media files, install [Git LFS](https://git-lfs.com/):
126+
127+
```bash
128+
git lfs install
129+
git lfs clone https://github.com/ajay-dhangar/ajay-dhangar.github.io.git
130+
```
131+
132+
This prevents huge files from breaking your clone process.
133+
134+
---
135+
136+
## Final Takeaway
137+
138+
If you’re facing the `RPC failed; curl 92 HTTP/2` error:
139+
140+
* Start with **`--depth=1`** (quickest fix).
141+
* If you need full history, increase the buffer size.
142+
* For big repos with assets, use **Git LFS or sparse checkout**.
143+
144+
These tricks saved me hours of frustration, and I hope they help you too.
1.8 MB
Loading

src/components/CertificateDetail.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ const CertificateDetail: React.FC<CertificateDetailProps> = ({ certificate }) =>
8181
<div className="grid lg:grid-cols-2 gap-16 mb-20">
8282
{/* Certificate Image */}
8383
<div className="cert-image">
84-
<div className="relative group">
84+
<div className="relative group md:max-w-[600px] sm:max-w-[300px] mx-auto">
8585
<div className="absolute inset-0 bg-gradient-to-r from-blue-500/20 to-purple-500/20 rounded-3xl blur-xl group-hover:blur-2xl transition-all duration-500" />
8686
<img
8787
src={certificate.certificateImage}
8888
alt={certificate.title}
89-
className="relative w-full rounded-3xl shadow-2xl hover:shadow-3xl transition-all duration-500 hover:scale-105"
89+
className="relative rounded-3xl shadow-2xl hover:shadow-3xl transition-all duration-500 hover:scale-105 w-full object-cover"
9090
/>
9191
<div className="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent rounded-3xl opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
9292
</div>
@@ -167,15 +167,15 @@ const CertificateDetail: React.FC<CertificateDetailProps> = ({ certificate }) =>
167167
</div>
168168

169169
{/* Skills */}
170-
<div className="mb-20">
170+
<div className="mb-20 px-2">
171171
<h3 className="text-4xl font-bold text-center text-gray-900 dark:text-white mb-12">
172172
Skills Validated
173173
</h3>
174174
<div className="flex flex-wrap justify-center gap-4">
175175
{certificate.skills.map((skill, index) => (
176176
<div
177177
key={index}
178-
className={`cert-skill px-6 py-3 bg-gradient-to-r ${certificate.color} text-white rounded-2xl shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-110 font-medium`}
178+
className={`cert-skill px-6 py-3 bg-gradient-to-r ${certificate.color} text-white rounded-2xl shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-110 font-medium cursor-default select-none`}
179179
>
180180
{skill}
181181
</div>

src/components/Online/Hero.tsx

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import React from "react";
2+
import { motion } from "framer-motion";
3+
import { Link } from "react-router-dom";
4+
import { FiArrowRight } from "react-icons/fi";
5+
6+
const HeroImg = "/hero.png";
7+
8+
const Hero = () => {
9+
return (
10+
<section className="relative bg-gradient-to-br from-blue-600 via-blue-700 to-blue-800 dark:from-blue-800 dark:via-blue-900 dark:to-gray-900 text-white overflow-hidden p-4">
11+
{/* Background Pattern */}
12+
<div className="absolute inset-0 opacity-10">
13+
<div className="absolute top-0 left-0 w-full h-full bg-[url('data:image/svg+xml,%3Csvg width=%2260%22 height=%2260%22 viewBox=%220 0 60 60%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cg fill=%22none%22 fill-rule=%22evenodd%22%3E%3Cg fill=%22%23ffffff%22 fill-opacity=%220.1%22%3E%3Ccircle cx=%227%22 cy=%227%22 r=%227%22/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')] repeat"></div>
14+
</div>
15+
16+
<div className="relative section-padding min-h-[80vh]">
17+
<div className="container-max mx-auto flex flex-col lg:flex-row items-center lg:items-start justify-between gap-10 lg:gap-20">
18+
<div className="max-w-4xl">
19+
<motion.h1
20+
initial={{ opacity: 0, y: 30 }}
21+
animate={{ opacity: 1, y: 0 }}
22+
transition={{ duration: 0.8 }}
23+
className="text-4xl md:text-6xl font-bold leading-tight mb-6"
24+
>
25+
MP Online Digital Services
26+
<span className="block text-2xl md:text-3xl font-normal mt-2 text-blue-200">
27+
One Stop Solution for All Digital Needs
28+
</span>
29+
</motion.h1>
30+
31+
<motion.div
32+
initial={{ opacity: 0, y: 30 }}
33+
animate={{ opacity: 1, y: 0 }}
34+
transition={{ duration: 0.8, delay: 0.2 }}
35+
className="flex items-center space-x-8 mb-8 text-xl"
36+
>
37+
<span className="flex items-center">
38+
<span className="w-2 h-2 bg-emerald-400 rounded-full mr-2"></span>
39+
Fast
40+
</span>
41+
<span className="flex items-center">
42+
<span className="w-2 h-2 bg-emerald-400 rounded-full mr-2"></span>
43+
Reliable
44+
</span>
45+
<span className="flex items-center">
46+
<span className="w-2 h-2 bg-emerald-400 rounded-full mr-2"></span>
47+
Affordable
48+
</span>
49+
</motion.div>
50+
51+
<motion.p
52+
initial={{ opacity: 0, y: 30 }}
53+
animate={{ opacity: 1, y: 0 }}
54+
transition={{ duration: 0.8, delay: 0.4 }}
55+
className="text-lg md:text-xl text-blue-100 mb-8 leading-relaxed max-w-3xl"
56+
>
57+
From government certificates to digital payments, banking services
58+
to educational forms - we provide comprehensive digital solutions
59+
to make your life easier. Experience hassle-free service with our
60+
expert team and modern technology.
61+
</motion.p>
62+
63+
<motion.div
64+
initial={{ opacity: 0, y: 30 }}
65+
animate={{ opacity: 1, y: 0 }}
66+
transition={{ duration: 0.8, delay: 0.6 }}
67+
className="flex flex-col sm:flex-row gap-4"
68+
>
69+
<Link
70+
to="/services"
71+
className="inline-flex items-center justify-center bg-white text-blue-600 font-semibold py-4 px-8 rounded-xl hover:bg-gray-100 transition-all duration-300 shadow-lg hover:shadow-2xl transform hover:-translate-y-1 group"
72+
>
73+
Explore Services
74+
<FiArrowRight className="ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform" />
75+
</Link>
76+
<Link
77+
to="/contact"
78+
className="inline-flex items-center justify-center border-2 border-white text-white font-semibold py-4 px-8 rounded-xl hover:bg-white hover:text-blue-600 transition-all duration-300 shadow-lg hover:shadow-2xl transform hover:-translate-y-1"
79+
>
80+
Contact Us
81+
</Link>
82+
</motion.div>
83+
</div>
84+
<div className="hidden lg:block w-1/2">
85+
<img
86+
src={HeroImg}
87+
alt="Description"
88+
className="w-full h-auto rounded-lg"
89+
/>
90+
</div>
91+
</div>
92+
</div>
93+
</section>
94+
);
95+
};
96+
97+
export default Hero;
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import React from 'react';
2+
import { motion } from 'framer-motion';
3+
import { Link } from 'react-router-dom';
4+
import { Service } from '../../data/services';
5+
import { FiArrowRight } from 'react-icons/fi';
6+
7+
interface ServiceCardProps {
8+
service: Service;
9+
index: number;
10+
}
11+
12+
const ServiceCard: React.FC<ServiceCardProps> = ({ service, index }) => {
13+
return (
14+
<motion.div
15+
initial={{ opacity: 0, y: 30 }}
16+
animate={{ opacity: 1, y: 0 }}
17+
transition={{ duration: 0.6, delay: index * 0.1 }}
18+
className="card group overflow-hidden"
19+
>
20+
<div className="p-6">
21+
<div className="flex items-center mb-4">
22+
<div className="text-4xl mr-4 group-hover:scale-110 transition-transform duration-300">
23+
{service.icon}
24+
</div>
25+
<div>
26+
<span className="inline-block bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400 text-sm px-3 py-1 rounded-full font-medium mb-2">
27+
{service.category}
28+
</span>
29+
<h3 className="text-xl font-bold text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors duration-300">
30+
{service.title}
31+
</h3>
32+
</div>
33+
</div>
34+
35+
<p className="text-gray-600 dark:text-gray-300 mb-6 leading-relaxed">
36+
{service.description}
37+
</p>
38+
39+
<Link
40+
to={`/online/services/${service.id}`}
41+
className="inline-flex items-center text-blue-600 dark:text-blue-400 font-semibold hover:text-blue-700 dark:hover:text-blue-300 transition-colors duration-300 group"
42+
>
43+
Learn More
44+
<FiArrowRight className="ml-2 h-4 w-4 group-hover:translate-x-1 transition-transform duration-300" />
45+
</Link>
46+
</div>
47+
48+
<div className="h-1 bg-gradient-to-r from-blue-600 to-emerald-600 transform scale-x-0 group-hover:scale-x-100 transition-transform duration-300 origin-left"></div>
49+
</motion.div>
50+
);
51+
};
52+
53+
export default ServiceCard;

0 commit comments

Comments
 (0)