Web Analytics

oci2git

⭐ 401 stars Assamese by Virviil

🌐 ভাষা

OCI2Git

[Documentation][documentation] Crates.io License

Downloads

[//]: # (mock for future test.yaml) [//]: # ([![Test Status](https://img.shields.io/github/actions/workflow/status/Virviil/oci2git/rust.yml?branch=master&event=push&label=Test)](https://github.com/Virviil/oci2git/actions))

এটা Rust এপ্লিকেচন যি কণ্টেইনাৰ ইমেজ (Docker, আদি) গিট ৰেপজিটৰিত ৰূপান্তৰ কৰে, আৰু YAML ফৰ্মেটত ফাইল ছিষ্টেম বিল অফ মেটেৰিয়েলছ (fsbom) নিৰ্মাণ কৰে। প্ৰতিটো কণ্টেইনাৰ স্তৰ গিট কমিট হিচাপে উপস্থাপন কৰা হয়, মূল ইমেজৰ ইতিহাস আৰু গঠন সংৰক্ষণ কৰি।

Demo of OCI2Git converting the nginx image

বৈশিষ্ট্যসমূহ

ব্যৱহাৰ ক্ষেত্ৰসমূহ

স্তৰ তুলনা (Layer Diffing)

কণ্টেইনাৰ সমস্যা সমাধান কৰাৰ সময়ত, Git ৰ শক্তিশালী diffing সক্ষমতা ব্যৱহাৰ কৰি যিকোনো দুইটা স্তৰৰ মাজত ঠিক কি পৰিৱর্তন ঘটিছে চাব পাৰি। git diff চলাই ইঞ্জিনিয়াৰসকলে কোন ফাইল যোগ, সংশোধন বা ডিলিট হৈছে সঠিকভাৱে চাব পাৰে, যাৰ ফলত প্ৰতিটো Dockerfile নিৰ্দেশনাৰ প্ৰভাৱ বুজা আৰু সমস্যাসকল চিনাক্ত কৰা সহজ হয়। Example for layer diff

উৎস অনুসৰণ (Origin Tracking)

git blame ব্যৱহাৰ কৰি, ডেভেলপাৰসকলে কেতিয়া বিশেষ ফাইল বা কোডৰ শাৰী কোন স্তৰে যোগ হৈছিল সোনকালে জানিব পাৰে। এইটো বিশেষকৈ কনফিগাৰেচন ফাইল বা ডিপেণ্ডেঞ্চি সংক্রান্ত সমস্যাৰ সময়ত গুৰুত্বপূর্ণ। প্ৰতিটো স্তৰ হাতৰেপে পৰীক্ষা নকৰাকৈ, যিকোনো ফাইলৰ উৎস স্তৰ আৰু সংশ্লিষ্ট Dockerfile নিৰ্দেশনা তৎক্ষণাত বিচাৰি পাব পাৰে।

ফাইল লাইফচাইকেল অনুসৰণ (File Lifecycle Tracking)

OCI2Git এ আপোনাক কণ্টেইনাৰ ইমেজৰ ইতিহাসত এটা নিৰ্দিষ্ট ফাইলৰ যাত্ৰা অনুসৰণৰ সুবিধা দিয়ে। কেতিয়া ফাইলটো সৃষ্টি হৈছিল, কেনেকৈ স্তৰসমূহত সলনি হৈছিল, আৰু কেতিয়া মচি পেলোৱা হৈছিল তাক চাব পাৰে। এই বিস্তৃত দৃশ্যই ফাইলৰ পৰিবর্তন বুজিবলৈ সহায় কৰে, স্তৰসমূহত হাতৰেপে অনুসৰণ নকৰাকৈ।

আপোনাৰ কণ্টেইনাৰ ইমেজত এটা ফাইলৰ ইতিহাস, কেতিয়া প্রথমে দেখা গৈছিল, সলনি বা ডিলিট হৈছিল জানিবলৈ, ৰূপান্তৰৰ পিছত এই Git কমাণ্ডসমূহ ব্যৱহাৰ কৰিব পাৰি:

# Full history of a file (including renames)
git log --follow -- /rootfs/my/file/path

First appearance (i.e. creation) - see which layer introduced the file

git log --diff-filter=A -- /rootfs/my/file/path

All changes made to the file (with diffs)

git log -p --follow -- /rootfs/my/file/path

When the file was deleted

git log --diff-filter=D -- /rootfs/my/file/path

Show short commit info (concise layer history)

git log --follow --oneline -- /rootfs/my/file/path

এই আদেশবোৰে যিকোনো ফাইলৰ সম্পূৰ্ণ ইতিহাসক কন্টেইনাৰ স্তৰৰ মাজেৰে সহজে অনুসৰণ কৰিবলৈ সক্ষম কৰে, স্তৰৰ টাৰবলসমূহ ম্যানুৱেলিভাৱে উলিয়াই তুলনা কৰাৰ জটিলতা নাথাকে।

বহু-স্তৰ বিশ্লেষণ

কেতিয়াবা আটাইতকৈ গুৰুত্বপূর্ণ তুলনাবোৰ বহু অপৰ্যায়ী স্তৰৰ পৰিৱর্তন পৰীক্ষা কৰাৰ পৰা আহে। OCI2Git ব্যৱহাৰ কৰি, আপোনোৱে Git ৰ তুলনামূলক টুলসমূহ ব্যৱহাৰ কৰি বহু নিৰ্মাণ স্তৰৰ মাজত উপাদানসমূহ কেনেদৰে বিকাশ হৈছে বিশ্লেষণ কৰিব পাৰে, যি ধৰণৰ ধাৰণা কেৱল সংলগ্ন স্তৰৰ ক্ষেত্ৰত দেখিবলৈ নোৱাৰা।

স্তৰ অন্বেষণ

git checkout ব্যৱহাৰ কৰি যিকোনো নিৰ্দিষ্ট কমিটলৈ গতি কৰিলে, আপুনি কন্টেইনাৰৰ ফাইল চিস্টেম ঠিক সেই স্তৰত যিদৰে আছিল পৰীক্ষা কৰিব পাৰে। এইটো ডেভেলপাৰসকলক ছবিৰ সৃষ্টি প্ৰক্ৰিয়াৰ যিকোনো বিন্দুত ফাইল আৰু ডাইৰেক্টৰীৰ নিৰ্দিষ্ট অৱস্থা পৰীক্ষা কৰিবলৈ সক্ষম কৰে, যি ডিবাগিং বা কন্টেইনাৰৰ আচৰণ পৰীক্ষা কৰোঁতে অমূল্য প্ৰেক্ষাপট যোগান ধৰিছে। পূৰ্বৰ কমিটলৈ চেকআউট

বহু-ছবি বিশ্লেষণ

যেতিয়া একাধিক কন্টেইনাৰ ছবিত সাধাৰণ বংশধৰ থাকে, OCI2Git কেৱল ছবিসমূহ প্ৰকৃততে বিভাজিত হ'লে ব্রাঞ্চ সৃষ্টি কৰে। এইটো আপোনাক একেটা ৰেপজিটৰিত বহু সম্পৰ্কিত ছবি বিশ্লেষণ কৰিবলৈ সক্ষম কৰে আৰু তেওঁলোকৰ সাধাৰণ ইতিহাস সংৰক্ষণ কৰে।

# Convert first image to create the base repository
oci2git postgres:16.9-alpine3.21 -o alp

Convert second image to the same output folder

oci2git nginx:1.28.0-alpine-slim -o alp
OCI2Git স্বয়ংক্ৰিয়ভাৱে ছবিসমূহৰ মাজত শ্বেয়াৰ কৰা স্তৰসমূহ চিনাক্ত কৰে আৰু এটি শাখাবদ্ধ গঠন সৃষ্টি কৰে যি তেওঁলোকৰ সাধাৰণ আধাৰক প্ৰতিফলিত কৰে। Git ইতিহাসত দেখা যাব: এই পদ্ধতিটো বিশেষভাৱে মূল্যবান: শ্বেয়াৰ কৰা আধাৰ আৰু বিভাজিত শাখাৰ সৈতে বহু-ছবি ৰেপ’জিট’ৰি গঠন

অতিৰিক্ত ব্যৱহাৰ ক্ষেত্ৰ

ইনষ্টলেশ্বন

পেকেজ মেনেজাৰসমূহ

#### macOS / Linux (Homebrew)

brew tap virviil/oci2git
brew install oci2git

#### ডেবিয়ান / উবুন্টু

সৰ্বশেষ মুক্তিৰ পৰা .deb পেকেজটো ডাউনলোড কৰি ইনষ্টল কৰক:

# For amd64 (x86_64)
wget https://github.com/virviil/oci2git/releases/latest/download/oci2git_VERSION_amd64.deb
sudo dpkg -i oci2git_VERSION_amd64.deb

For arm64

wget https://github.com/virviil/oci2git/releases/latest/download/oci2git_VERSION_arm64.deb sudo dpkg -i oci2git_VERSION_arm64.deb

#### আৰ্চ লিনাক্স (AUR)

# Using yay
yay -S oci2git-bin

Using paru

paru -S oci2git-bin

Manual installation

git clone https://aur.archlinux.org/oci2git-bin.git cd oci2git-bin makepkg -si

আগতে নিৰ্মিত বাইনেৰিসমূহ

আপোনাৰ প্লেটফৰ্মৰ বাবে উপযুক্ত বাইনেৰীটো সৰ্বশেষ ৰিলিজৰ পৰা ডাউনলোড কৰক:

# Linux x86_64
wget https://github.com/virviil/oci2git/releases/latest/download/oci2git-linux-x86_64.tar.gz
tar xzf oci2git-linux-x86_64.tar.gz
sudo mv oci2git-linux-x86_64 /usr/local/bin/oci2git
chmod +x /usr/local/bin/oci2git

macOS (Apple Silicon)

wget https://github.com/virviil/oci2git/releases/latest/download/oci2git-darwin-aarch64.tar.gz tar xzf oci2git-darwin-aarch64.tar.gz sudo mv oci2git-darwin-aarch64 /usr/local/bin/oci2git chmod +x /usr/local/bin/oci2git

Crates.io ৰ পৰা

cargo install oci2git

উৎসৰ পৰা

# Clone the repository
git clone https://github.com/virviil/oci2git.git
cd oci2git

Install locally

cargo install --path .

ব্যৱহাৰ

oci2git [OPTIONS] 
oci2git convert [OPTIONS] 
oci2git fsbom [OPTIONS] 

convert — OCI ইমেজ → Git ৰিপ'জিট'ৰি

oci2git convert [OPTIONS] 

or simply:

oci2git
বিকল্পসমূহ: -o, --output Git ৰিপজিটৰীৰ বাবে আউটপুট ডাইৰেক্টৰি [ডিফল্ট: ./container_repo] -e, --engine ব্যৱহাৰ কৰিবলগীয়া কণ্টেইনাৰ ইঞ্জিন (docker, nerdctl, tar) [ডিফল্ট: docker] -v, --verbose বিস্তৃত মোড (-v তথ্যৰ বাবে, -vv ডিবাগৰ বাবে, -vvv ট্ৰেছৰ বাবে)

fsbom — ফাইলচিষ্টেম বিল অফ মেটেৰিয়েলছ

oci2git fsbom [OPTIONS] 

বিকল্পসমূহ: -o, --output YAML BOM ফাইলৰ বাবে আউটপুট পথ [ডিফল্ট: ./fsbom.yml] -e, --engine ব্যৱহাৰ কৰিব লগা কণ্টেইনাৰ ইঞ্জিন (docker, nerdctl, tar) [ডিফল্ট: docker] -v, --verbose Verbose মোড (-v তথ্যৰ বাবে, -vv ডিবাগৰ বাবে, -vvv ট্ৰেচৰ বাবে)

পৰিৱেশ ভেৰিয়েবলসমূহ: TMPDIR ইন্টাৰমিডিয়েট ডাটা প্ৰসেসিংৰ বাবে ব্যৱহৃত ডিফল্ট স্থান সলনি কৰিবলৈ এই পৰিৱেশ ভেৰিয়েবল ছেট কৰক। এইটো প্লেটফৰ্ম-নির্ভৰ (উদাহৰণস্বৰূপ, Unix/macOS-ত TMPDIR, Windows-ত TEMP বা TMP).

উদাহৰণসমূহ

ৰূপান্তৰ

Docker ইঞ্জিন ব্যৱহাৰ কৰি (ডিফল্ট):

oci2git ubuntu:latest

or explicitly:

oci2git convert ubuntu:latest -o ./ubuntu-repo
আজি ডাউনলোড কৰা ইমেজ টাৰবল ব্যৱহাৰ কৰি:

oci2git convert -e tar -o ./ubuntu-repo /path/to/ubuntu-latest.tar

টাৰ ইঞ্জিনে এটা বৈধ OCI ফৰ্মেট টাৰবল আশা কৰে, যি সাধাৰণতে docker save ব্যৱহাৰ কৰি সৃষ্টি কৰা হয়:

# Create a tarball from a local Docker image
docker save -o ubuntu-latest.tar ubuntu:latest

Convert the tarball to a Git repository

oci2git convert -e tar -o ./ubuntu-repo ubuntu-latest.tar

এইটো ./ubuntu-repo ত এটা Git ৰিপ'জিট'ৰি সৃষ্টি কৰিব য'ত এইবোৰ থাকিব:

Git ইতিহাসটো কণ্টেইনাৰৰ স্তৰৰ ইতিহাস প্ৰতিফলিত কৰে:

ফাইলচিষ্টেম বিল অফ মেটেৰিয়েলছ (fsbom)

প্ৰত্যেকটা স্তৰত অন্তৰ্ভুক্ত বা পৰিবৰ্তিত কৰা প্ৰতিটো ফাইলৰ YAML তালিকা উত্পন্ন কৰক:

oci2git fsbom ubuntu:latest -o ubuntu.yml
এটা টাৰবল ব্যৱহাৰ কৰা:

oci2git fsbom -e tar image.tar -o image-bom.yml
আউটপুট YAML-এ প্ৰতিটো স্তৰৰ তালিকা থাকে, তাৰ প্ৰৱিষ্টিসমূহ প্ৰকাৰ (file, hardlink, symlink, directory) আৰু স্থিতি (n:uid:gid নতুনৰ বাবে, m:uid:gid পৰিবৰ্তিতৰ বাবে) অনুসৰি টেগ কৰা থাকে। মচি দিয়া ফাইলসমূহ (OCI whiteouts) বাদ দিয়া হয়।

layers:
  
  • index: 0
command: "ADD rootfs.tar.gz / # buildkit" digest: "sha256:45f3ea58..." entries:
  • type: file
path: "bin/busybox" size: 919304 mode: 493 stat: "n:0:0"
  • type: hardlink
path: "bin/sh" target: "bin/busybox" stat: "n:0:0"
  • type: symlink
path: "lib64" target: "lib" stat: "n:0:0"
  • index: 1
command: "RUN apk add --no-cache curl" digest: "sha256:..." entries:
  • type: file
path: "usr/bin/curl" size: 204800 mode: 493 stat: "n:0:0"
  • type: file
path: "etc/apk/world" size: 32 mode: 420 stat: "m:0:0"

ৰিপ'জিট'ৰী গঠন

repository/
├── .git/
├── Image.md     # Complete image metadata
└── rootfs/      # Filesystem content from the container

আৱশ্যকতাসমূহ

লাইচেঞ্চ

MIT

[ডকুমেণ্টেশ্বন]: https://docs.rs/oci2git/

--- Tranlated By Open Ai Tx | Last indexed: 2026-04-02 ---