ஒரு குறிப்பிட்ட ஜிட் கமிட்டில் அனைத்து கோப்புகளையும் பட்டியலிடுவது எப்படி

ஒரு குறிப்பிட்ட ஜிட் கமிட்டில் அனைத்து கோப்புகளையும் பட்டியலிடுவது எப்படி
Shell

Git கமிட்டில் கோப்புகளைப் பார்க்கிறது

Git உடன் பணிபுரியும் போது, ​​ஒரு குறிப்பிட்ட கமிட்டில் உள்ள அனைத்து கோப்புகளையும் பார்க்க வேண்டிய அவசியத்தை நீங்கள் காணலாம். குறியீடு மதிப்பாய்வுகள், பிழைத்திருத்தம் அல்லது கடந்த காலத்தில் செய்யப்பட்ட மாற்றங்களைப் புரிந்துகொள்வதற்கு இது முக்கியமானதாக இருக்கும். கமிட்களை ஆய்வு செய்ய Git பல்வேறு கட்டளைகளை வழங்குகிறது, ஆனால் அவற்றில் சில வெளியீட்டை ஒழுங்கீனம் செய்யக்கூடிய புறம்பான தகவல்களை உள்ளடக்கியிருக்கலாம்.

இந்தக் கட்டுரையில், கொடுக்கப்பட்ட கமிட்களில் உள்ள அனைத்து கோப்புகளையும் எவ்வாறு சுத்தமாகவும் நேரடியான முறையில் பட்டியலிடுவது என்பதை ஆராய்வோம். போன்ற கட்டளைகள் போது git நிகழ்ச்சி கோப்புகளை வேறுபாடு விவரங்களுடன் காட்சிப்படுத்துங்கள், சிறந்த தெளிவு மற்றும் பயன்பாட்டிற்காக கோப்புகளின் எளிய பட்டியலை வழங்கும் முறைகளில் கவனம் செலுத்துவோம்.

கட்டளை விளக்கம்
git diff-tree ஒரு கமிட் மரத்திற்கும் அதன் பெற்றோருக்கும் உள்ள வேறுபாடுகளைக் காட்ட Git கட்டளை பயன்படுத்தப்படுகிறது.
--no-commit-id கமிட் ஐடி வெளியீட்டை அடக்குவதற்கு ஜிட் டிஃப்-ட்ரீக்கான ஒரு விருப்பம், கோப்பு பாதைகளை மட்டுமே காட்டுகிறது.
--name-only மாற்றப்பட்ட கோப்புகளின் பெயர்களை மட்டும் காண்பிக்க git diff-treeக்கான விருப்பம்.
-r அனைத்து மாற்றங்களும் பட்டியலிடப்பட்டுள்ளதை உறுதிசெய்து, ஜிட் டிஃப்-ட்ரீக்கான அடைவு மரத்தை மீண்டும் மீண்டும் கடந்து செல்கிறது.
subprocess.run ஷெல்லில் ஒரு கட்டளையை இயக்கி அதன் வெளியீட்டைப் பிடிக்கும் பைதான் செயல்பாடு.
exec ஷெல் கட்டளையை இயக்கவும் அதன் வெளியீட்டைப் பிடிக்கவும் ஒரு Node.js செயல்பாடு.

ஸ்கிரிப்ட் செயல்பாடுகளின் விரிவான விளக்கம்

கொடுக்கப்பட்ட ஸ்கிரிப்ட்கள், கொடுக்கப்பட்ட Git கமிட்டின் ஒரு பகுதியாக இருக்கும் அனைத்து கோப்புகளையும் வேறுபட்ட தகவலைக் காட்டாமல் பட்டியலிட உதவுகிறது. ஷெல் ஸ்கிரிப்ட் ஒரு கமிட் ஹாஷ் ஒரு வாதமாக வழங்கப்பட்டதா என்பதைச் சரிபார்ப்பதன் மூலம் தொடங்குகிறது. இல்லையெனில், அது ஒரு பயன்பாட்டு செய்தியை அச்சிட்டு வெளியேறும். கமிட் ஹாஷ் வழங்கப்பட்டால், அது கட்டளையை இயக்குகிறது git diff-tree விருப்பங்களுடன் --no-commit-id, --name-only, மற்றும் -r. இந்த கட்டளையானது குறிப்பிட்ட கமிட்டால் பாதிக்கப்பட்ட கோப்புகளை ஒரு எளிய வடிவத்தில் பட்டியலிடுகிறது. இந்த முறை தேவையற்ற வேறுபாடு தகவல்களைத் தவிர்த்து, கோப்பு பெயர்கள் மட்டுமே காட்டப்படுவதை உறுதி செய்கிறது. இந்த ஸ்கிரிப்ட் குறிப்பாக Git கிடைக்கும் சூழல்களில் உறுதி உள்ளடக்கங்களின் விரைவான மற்றும் நேரடியான பட்டியல்களுக்கு பயனுள்ளதாக இருக்கும்.

பைதான் ஸ்கிரிப்ட் இதேபோன்ற செயல்பாட்டைச் செய்கிறது ஆனால் பைதான்களைப் பயன்படுத்துகிறது subprocess இயக்க தொகுதி git diff-tree கட்டளை. இது கட்டளையின் வெளியீட்டைக் கைப்பற்றி கன்சோலில் அச்சிடுகிறது. இந்த ஸ்கிரிப்ட் கட்டளை வரி மதிப்புருக்களின் சரியான எண்ணிக்கையை சரிபார்க்கிறது, தேவைப்பட்டால் பிழை செய்தியை அச்சிடுகிறது, பின்னர் Git கட்டளையை செயல்படுத்துகிறது. தி subprocess.run கட்டளை செயலாக்கத்தை கையாள இங்கே செயல்பாடு பயன்படுத்தப்படுகிறது, நிலையான வெளியீடு மற்றும் நிலையான பிழை இரண்டையும் கைப்பற்றுகிறது. இந்த அணுகுமுறை Git செயல்பாடுகளை பைதான் பணிப்பாய்வுகளில் ஒருங்கிணைக்க மற்றும் பைதான் பயன்பாட்டிற்குள் வெளியீட்டின் கூடுதல் செயலாக்கம் தேவைப்படும் சந்தர்ப்பங்களில் பயனுள்ளதாக இருக்கும்.

Node.js ஸ்கிரிப்டும் அதே இலக்கை அடைகிறது ஆனால் அதைப் பயன்படுத்துகிறது exec Node.js இன் செயல்பாடு child_process தொகுதி. இது கமிட் ஹாஷை ஒரு வாதமாக எடுத்து அதை செயல்படுத்துகிறது git diff-tree பொருத்தமான விருப்பங்களுடன் கட்டளையிடவும். ஸ்கிரிப்ட் வெளியீட்டைக் கைப்பற்றி அதை அச்சிடுகிறது, செயல்படுத்தும் போது ஏற்படும் பிழைகளைக் கையாளுகிறது. இந்த ஸ்கிரிப்ட் குறிப்பாக JavaScript அல்லது Node.js சூழலில் பணிபுரியும் டெவலப்பர்களுக்கு சாதகமாக உள்ளது மற்றும் அவர்களின் பயன்பாடுகள் அல்லது தானியங்கு பணிப்பாய்வுகளில் Git செயல்பாடுகளை இணைக்க வேண்டும். ஒவ்வொரு ஸ்கிரிப்டும் வெவ்வேறு நிரலாக்க மொழிகள் மற்றும் சூழல்களின் பன்முகத்தன்மையை ஒரு Git கமிட்டில் கோப்புகளை பட்டியலிடுவதில் உள்ள அதே சிக்கலைத் தீர்ப்பதில் எடுத்துக்காட்டுகிறது.

Git கட்டளைகளைப் பயன்படுத்தி ஒரு குறிப்பிட்ட Git கமிட்டில் கோப்புகளை பட்டியலிடுதல்

ஷெல் ஸ்கிரிப்ட்

#!/bin/bash
# This script lists all files in a given git commit

commit_hash=$1

if [ -z "$commit_hash" ]; then
  echo "Usage: $0 <commit_hash>"
  exit 1
fi

git diff-tree --no-commit-id --name-only -r $commit_hash

பைத்தானுடன் ஜிட் கமிட்டில் கோப்புகளைக் காண்பித்தல்

பைதான் ஸ்கிரிப்ட்

import subprocess
import sys

def list_files_in_commit(commit_hash):
    try:
        result = subprocess.run(['git', 'diff-tree', '--no-commit-id', '--name-only', '-r', commit_hash],
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        if result.returncode != 0:
            print(f"Error: {result.stderr.strip()}")
        else:
            print(result.stdout.strip())
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python list_files_in_commit.py <commit_hash>")
    else:
        list_files_in_commit(sys.argv[1])

Node.js ஐப் பயன்படுத்தி Git கமிட்டிலிருந்து கோப்புகளைப் பிரித்தெடுத்தல்

Node.js ஸ்கிரிப்ட்

const { exec } = require('child_process');

function listFilesInCommit(commitHash) {
  exec(`git diff-tree --no-commit-id --name-only -r ${commitHash}`, (error, stdout, stderr) => {
    if (error) {
      console.error(`Error: ${stderr}`);
      return;
    }
    console.log(stdout.trim());
  });
}

const commitHash = process.argv[2];

if (!commitHash) {
  console.log('Usage: node listFilesInCommit.js <commitHash>');
} else {
  listFilesInCommit(commitHash);
}

Git கமிட்டில் கோப்புகளை பட்டியலிடுவதற்கான மேம்பட்ட நுட்பங்கள்

அடிப்படை Git கட்டளைகளைப் பயன்படுத்துவதற்கு அப்பால், ஒரு குறிப்பிட்ட கமிட்டில் கோப்புகளை பட்டியலிட மற்ற மேம்பட்ட நுட்பங்கள் மற்றும் கருவிகள் உள்ளன. அத்தகைய ஒரு கருவி git log பல்வேறு விருப்பங்களுடன் இணைந்து. பயன்படுத்தி git log உடன் --name-only மற்றும் --pretty=format: விருப்பங்கள், நீங்கள் மிகவும் தனிப்பயனாக்கப்பட்ட முறையில் கோப்புகளை பட்டியலிட வெளியீட்டை வடிவமைக்கலாம். உதாரணத்திற்கு, git log --name-only --pretty=format:"%h %s" -1 [commit_hash] கமிட் ஹாஷ் மற்றும் சப்ஜெக்ட்டைக் காண்பிக்கும், அதைத் தொடர்ந்து கோப்பு பெயர்கள் இருக்கும். இந்த முறை மிகவும் நெகிழ்வான வெளியீட்டை அனுமதிக்கிறது மற்றும் அறிக்கைகளை உருவாக்க அல்லது பிற கருவிகளுடன் ஒருங்கிணைக்க பயனுள்ளதாக இருக்கும்.

மற்றொரு அணுகுமுறை Git நூலகங்களைப் பயன்படுத்துவது போன்ற பல்வேறு நிரலாக்க மொழிகளுக்கு கிடைக்கும் libgit2 C க்கு, pygit2 பைத்தானுக்கு, மற்றும் nodegit Node.jsக்கு. இந்த நூலகங்கள் Git களஞ்சியங்களுடன் தொடர்புகொள்வதற்கான ஒரு நிரல் வழியை வழங்குகின்றன, மேலும் நிரல்ரீதியாக ஒரு கமிட் உள்ள கோப்புகளை பட்டியலிட பயன்படுத்தலாம். உதாரணமாக, உடன் pygit2, நீங்கள் ஒரு கமிட் ஆப்ஜெக்ட்டை அணுகலாம் மற்றும் கோப்புகளின் பட்டியலைப் பெற அதன் மரத்தின் மீது மீண்டும் மீண்டும் செய்யலாம். எளிய கட்டளை வரி வெளியீட்டை விட சிக்கலான தர்க்கம் அல்லது கையாளுதல் தேவைப்படும் பயன்பாடுகள் அல்லது ஸ்கிரிப்ட்களில் நேரடியாக Git செயல்பாட்டை ஒருங்கிணைக்க வேண்டியிருக்கும் போது இந்த அணுகுமுறை பயனுள்ளதாக இருக்கும்.

Git கமிட்டில் கோப்புகளை பட்டியலிடுவது பற்றிய பொதுவான கேள்விகள்

  1. Git கட்டளைகளைப் பயன்படுத்தி ஒரு குறிப்பிட்ட கமிட்டில் உள்ள அனைத்து கோப்புகளையும் எவ்வாறு பட்டியலிடுவது?
  2. நீங்கள் பயன்படுத்தலாம் git diff-tree --no-commit-id --name-only -r [commit_hash] அனைத்து கோப்புகளையும் ஒரு உறுதிமொழியில் பட்டியலிட.
  3. Git இல் --name-only விருப்பத்தின் நோக்கம் என்ன?
  4. தி --name-only Git இல் உள்ள விருப்பம் உண்மையான வேறுபாடுகளைக் காட்டாமல், மாற்றப்பட்ட கோப்புகளின் பெயர்களை மட்டுமே காட்டுகிறது.
  5. கட்டளை வரியைப் பயன்படுத்தாமல் ஒரு கமிட்டியில் கோப்புகளை எவ்வாறு பட்டியலிடுவது?
  6. போன்ற Git நூலகங்களைப் பயன்படுத்தலாம் pygit2 பைத்தானுக்கு அல்லது nodegit Node.js க்கு ஒரு உறுதிமொழியில் உள்ள கோப்புகளின் பட்டியலை நிரல்ரீதியாக அணுகலாம்.
  7. ஒரு கமிட்டியில் கோப்புகளை பட்டியலிடும்போது வெளியீட்டு வடிவமைப்பைத் தனிப்பயனாக்க முடியுமா?
  8. ஆம், நீங்கள் பயன்படுத்தலாம் git log போன்ற விருப்பங்களுடன் --pretty=format: ஒரு உறுதிமொழியில் கோப்புகளை பட்டியலிடும்போது வெளியீட்டு வடிவமைப்பைத் தனிப்பயனாக்க.
  9. ஜிட் ஷோவிற்கும் ஜிட் டிஃப்-ட்ரீக்கும் என்ன வித்தியாசம்?
  10. git show அதே நேரத்தில், மாறுபாட்டுடன் உறுதித் தகவலைக் காட்டுகிறது git diff-tree கமிட் மூலம் பாதிக்கப்பட்ட கோப்புகளின் பெயர்களை மட்டும் காட்ட பயன்படுத்தலாம்.
  11. வரைகலை Git கிளையண்ட்டைப் பயன்படுத்தி ஒரு கமிட்டியில் கோப்புகளை பட்டியலிட முடியுமா?
  12. ஆம், பெரும்பாலான வரைகலை Git கிளையண்டுகள் தங்கள் பயனர் இடைமுகத்தின் மூலம் உறுதிமொழியில் உள்ள கோப்புகளின் பட்டியலைப் பார்ப்பதற்கான வழியை வழங்குகின்றன.
  13. எனது பயன்பாட்டில் Git செயல்பாட்டை எவ்வாறு ஒருங்கிணைப்பது?
  14. போன்ற Git நூலகங்களைப் பயன்படுத்தலாம் libgit2, pygit2, அல்லது nodegit உங்கள் பயன்பாட்டில் நேரடியாக Git செயல்பாட்டை ஒருங்கிணைக்க.
  15. Git கமிட்டில் கோப்புகளை பட்டியலிட வேறு ஏதேனும் கருவிகள் அல்லது கட்டளைகள் உள்ளதா?
  16. தவிர git diff-tree, நீங்கள் பயன்படுத்தலாம் git log மற்றும் பல்வேறு Git லைப்ரரிகளில் கோப்புகளை பட்டியலிட.

ஆய்வுகளை மூடுதல்

திறமையான பதிப்பு கட்டுப்பாட்டு நிர்வாகத்திற்கு Git கமிட்டில் உள்ள அனைத்து கோப்புகளையும் எவ்வாறு பட்டியலிடுவது என்பதைப் புரிந்துகொள்வது அவசியம். போன்ற கட்டளைகளைப் பயன்படுத்துவதன் மூலம் git diff-tree பொருத்தமான விருப்பங்கள் மற்றும் வெவ்வேறு நிரலாக்க மொழிகளில் ஸ்கிரிப்ட்களை மேம்படுத்துவதன் மூலம், நீங்கள் இந்த செயல்முறையை நெறிப்படுத்தலாம். இந்த நுட்பங்கள் கோப்புகளை பட்டியலிட உதவுவது மட்டுமல்லாமல், பல்வேறு மேம்பாட்டு சூழல்களுடன் நன்றாக ஒருங்கிணைத்து, உங்கள் பணிப்பாய்வு மற்றும் உற்பத்தித்திறனை மேம்படுத்துகிறது.