Git ನಲ್ಲಿ ಬ್ಲಾಬ್ ಸ್ಟ್ರಿಪ್ಪಿಂಗ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
Git ನಲ್ಲಿ, ದೊಡ್ಡ ಫೈಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಒಂದು ಸವಾಲಾಗಿರಬಹುದು, ವಿಶೇಷವಾಗಿ ಕೆಲಸ ಮಾಡುವ ಪ್ರತಿಯಲ್ಲಿ ಅವುಗಳು ಇನ್ನು ಮುಂದೆ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದಾಗ. ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯ ಇತಿಹಾಸದಿಂದ ಈ ದೊಡ್ಡ ಫೈಲ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು BFG ಮತ್ತು Git ಫಿಲ್ಟರ್-ರೆಪೊದಂತಹ ಪರಿಕರಗಳು ಪರಿಹಾರಗಳನ್ನು ನೀಡುತ್ತವೆ. ಆದಾಗ್ಯೂ, BFG ಯಂತೆಯೇ Git ಫಿಲ್ಟರ್-ರೆಪೊದೊಂದಿಗೆ ಅದೇ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸುವುದು ಟ್ರಿಕಿ ಆಗಿರಬಹುದು.
ಈ ಲೇಖನವು BFG ಆಜ್ಞೆಯನ್ನು ಹೇಗೆ ಪುನರಾವರ್ತಿಸುವುದು ಎಂಬುದನ್ನು ಪರಿಶೋಧಿಸುತ್ತದೆ --ಸ್ಟ್ರಿಪ್-ಬ್ಲಾಬ್ಸ್-ದೊಡ್ಡದು Git ಫಿಲ್ಟರ್-ರೆಪೋ ಬಳಸಿ. ನಾವು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತೇವೆ ಮತ್ತು ಇನ್ನೂ ಬಳಕೆಯಲ್ಲಿರುವ ಫೈಲ್ಗಳನ್ನು ಆಕಸ್ಮಿಕವಾಗಿ ತೆಗೆದುಹಾಕದೆಯೇ ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸ್ವಚ್ಛಗೊಳಿಸಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಹಂತ-ಹಂತದ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಒದಗಿಸುತ್ತೇವೆ.
| ಆಜ್ಞೆ | ವಿವರಣೆ |
|---|---|
| from git import Repo | Git ರೆಪೊಸಿಟರಿಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು GitPython ಲೈಬ್ರರಿಯ Repo ವರ್ಗವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತದೆ. |
| git_filter_repo import RepoFilter | ರೆಪೊಸಿಟರಿ ಬ್ಲಾಬ್ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು git-filter-repo ನಿಂದ RepoFilter ವರ್ಗವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತದೆ. |
| repo = Repo(repo_path) | ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ರೆಪೊಸಿಟರಿ ಮಾರ್ಗವನ್ನು ಸೂಚಿಸುವ ರೆಪೊ ವಸ್ತುವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. |
| RepoFilter(repo).filter_blobs(filter_large_blobs) | ರೆಪೊಸಿಟರಿಯಿಂದ ದೊಡ್ಡ ಬ್ಲಾಬ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಕಸ್ಟಮ್ ಫಿಲ್ಟರ್ ಕಾರ್ಯವನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ. |
| git rev-list --objects --all | ಬ್ಲಾಬ್ಗಳು, ಮರಗಳು ಮತ್ತು ಕಮಿಟ್ಗಳು ಸೇರಿದಂತೆ ರೆಪೊಸಿಟರಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. |
| git cat-file --batch-check | ಅವುಗಳ ಗಾತ್ರ ಸೇರಿದಂತೆ ವಸ್ತುಗಳ ಬಗ್ಗೆ ವಿವರವಾದ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ. |
| xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT | ಗುರುತಿಸಲಾದ ಪ್ರತಿಯೊಂದು ದೊಡ್ಡ ಬ್ಲಬ್ಗೆ git ಫಿಲ್ಟರ್-ರೆಪೋ ಆಜ್ಞೆಯನ್ನು ಅನ್ವಯಿಸಲು xargs ಅನ್ನು ಬಳಸುತ್ತದೆ. |
ಒದಗಿಸಿದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ
Git ರೆಪೊಸಿಟರಿಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ GitPython ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ ಮತ್ತು , ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ರೆಪೊಸಿಟರಿ ಮಾರ್ಗವನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ನಂತರ ಫಿಲ್ಟರ್ ಕಾರ್ಯವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ 10MB ಗಿಂತ ದೊಡ್ಡ ಬ್ಲಬ್ಗಳನ್ನು ಗುರುತಿಸಲು. ಈ ಫಿಲ್ಟರ್ ಅನ್ನು ಬಳಸಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ RepoFilter(repo).filter_blobs(filter_large_blobs), ಇದು ಗಾತ್ರದ ಮಿತಿಯನ್ನು ಮೀರಿದ ಬ್ಲಾಬ್ಗಳನ್ನು ರೆಪೊಸಿಟರಿಯ ಇತಿಹಾಸದಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
Git ಆಜ್ಞೆಗಳು ಮತ್ತು ಶೆಲ್ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ ಇದೇ ಗುರಿಯನ್ನು ಸಾಧಿಸುತ್ತದೆ. ಇದು ರೆಪೊಸಿಟರಿ ಡೈರೆಕ್ಟರಿಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಬಳಸುವ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ . ಪ್ರತಿಯೊಂದು ವಸ್ತುವನ್ನು ಅದರ ಗಾತ್ರಕ್ಕಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ . ನಿಗದಿತ ಗಾತ್ರದ ಮಿತಿಗಿಂತ ದೊಡ್ಡದಾದ ವಸ್ತುಗಳನ್ನು ಬಳಸಿ ಫಿಲ್ಟರ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ xargs ಅನ್ವಯಿಸಲು ಪ್ರತಿ ಗುರುತಿಸಲಾದ ದೊಡ್ಡ ಬೊಟ್ಟುಗೆ. ಈ ವಿಧಾನವು ರೆಪೊಸಿಟರಿಯಿಂದ ದೊಡ್ಡ ಬ್ಲಾಬ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ತೆಗೆದುಹಾಕುತ್ತದೆ, ಅನಗತ್ಯ ದೊಡ್ಡ ಫೈಲ್ಗಳಿಲ್ಲದೆ ಶುದ್ಧ ಇತಿಹಾಸವನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ.
ಗಾತ್ರದ ಮೂಲಕ Git Blobs ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಪೈಥಾನ್ ಅನ್ನು ಬಳಸುವುದು
ದೊಡ್ಡ ಬ್ಲಾಬ್ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್
# Import necessary modulesimport osfrom git import Repofrom git_filter_repo import RepoFilter# Define the repository path and size limitrepo_path = 'path/to/your/repo'size_limit = 10 * 1024 * 1024 # 10 MB# Initialize the repositoryrepo = Repo(repo_path)# Define a filter function to remove large blobsdef filter_large_blobs(blob):return blob.size > size_limit# Apply the filter to the repositoryRepoFilter(repo).filter_blobs(filter_large_blobs)
ದೊಡ್ಡ Git Blobs ಅನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ತೆಗೆದುಹಾಕಲು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಳಸುವುದು
Git ನಲ್ಲಿ ಬ್ಲಾಬ್ ನಿರ್ವಹಣೆಗಾಗಿ ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್
#!/bin/bash# Define repository path and size limitREPO_PATH="path/to/your/repo"SIZE_LIMIT=10485760 # 10 MB# Navigate to the repositorycd $REPO_PATH# List blobs larger than the size limitgit rev-list --objects --all |git cat-file --batch-check='%(objectname) %(objecttype) %(objectsize) %(rest)' |awk '$3 >= $SIZE_LIMIT {print $1}' |xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMITecho "Large blobs removed from the repository"
ಸುಧಾರಿತ Git ಫಿಲ್ಟರ್-ರೆಪೋ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ
ಹಾಗೆಯೇ ದೊಡ್ಡ ಫೈಲ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ, ನಿಮ್ಮ ರೆಪೊಸಿಟರಿ ಕ್ಲೀನಪ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಆಯ್ಕೆಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಬಳಸಬಹುದು ನಿರ್ದಿಷ್ಟ ಫೈಲ್ಗಳು ಅಥವಾ ಡೈರೆಕ್ಟರಿಗಳಿಗೆ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಮಿತಿಗೊಳಿಸಲು. ಬೊಟ್ಟು ತೆಗೆಯಲು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯ ಕೆಲವು ಪ್ರದೇಶಗಳನ್ನು ಮಾತ್ರ ಗುರಿಯಾಗಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಮತ್ತೊಂದು ಉಪಯುಕ್ತ ಆಯ್ಕೆಯಾಗಿದೆ , ಇದು ಕಾರ್ಯಾಚರಣೆಯಿಂದ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಾರ್ಗಗಳನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ, ಯಾವ ಫೈಲ್ಗಳು ಅಸ್ಪೃಶ್ಯವಾಗಿ ಉಳಿಯುತ್ತವೆ ಎಂಬುದರ ಮೇಲೆ ಹೆಚ್ಚಿನ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತದೆ.
ಇದಲ್ಲದೆ, ನೀವು ಸಂಯೋಜಿಸಬಹುದು ಜೊತೆಗೆ ಅವುಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಬದಲಾವಣೆಗಳನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಲು. ಏನನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು ಎಂಬುದರ ವಿವರವಾದ ವರದಿಯನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಅಳಿಸುವಿಕೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಇದು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಸುಧಾರಿತ ಆಯ್ಕೆಗಳನ್ನು ಬಳಸುವುದರಿಂದ ನಿಮ್ಮ ರೆಪೊಸಿಟರಿ ನಿರ್ವಹಣಾ ಕಾರ್ಯಗಳ ನಮ್ಯತೆ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು, ಸ್ವಚ್ಛ ಮತ್ತು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಯೋಜನೆಯ ಇತಿಹಾಸವನ್ನು ಖಾತ್ರಿಪಡಿಸಿಕೊಳ್ಳಬಹುದು.
- ಏನು ಮಾಡುತ್ತದೆ ಮಾಡುವುದೇ?
- ಇದು ರೆಪೊಸಿಟರಿ ಇತಿಹಾಸದಿಂದ ನಿಗದಿತ ಗಾತ್ರಕ್ಕಿಂತ ದೊಡ್ಡದಾದ ಬ್ಲಬ್ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.
- ಹೇಗೆ ಮಾಡುತ್ತದೆ ಕೆಲಸ?
- ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಾರ್ಗಗಳನ್ನು ಫಿಲ್ಟರ್ನಿಂದ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದನ್ನು ಇದು ಹೊರತುಪಡಿಸುತ್ತದೆ.
- ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ನಾನು ಪೂರ್ವವೀಕ್ಷಿಸಬಹುದೇ?
- ಹೌದು, ಬಳಸುವುದು ಬದಲಾವಣೆಗಳ ವಿವರವಾದ ವರದಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ನಿರ್ದಿಷ್ಟ ಫೈಲ್ಗಳು ಅಥವಾ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ನಾನು ಹೇಗೆ ಗುರಿಪಡಿಸುವುದು?
- ಬಳಸಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಮಾರ್ಗಗಳಿಗೆ ಸೀಮಿತಗೊಳಿಸುವ ಆಯ್ಕೆ.
- ನ ಉದ್ದೇಶವೇನು ಪೈಥಾನ್ನಲ್ಲಿ ವರ್ಗ?
- ಇದು ಕಸ್ಟಮ್ ಫಿಲ್ಟರ್ಗಳನ್ನು ರೆಪೊಸಿಟರಿಗೆ ಅನ್ವಯಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಲು ಒಂದು ಮಾರ್ಗವಿದೆಯೇ ?
- ಒಮ್ಮೆ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿದರೆ, ಅವುಗಳನ್ನು ಸುಲಭವಾಗಿ ರದ್ದುಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ. ಯಾವಾಗಲೂ ಮೊದಲು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿ.
- ಏನು ಮಾಡುತ್ತದೆ ಮಾಡುವುದೇ?
- ಇದು ಬ್ಲಾಬ್ಗಳು, ಮರಗಳು ಮತ್ತು ಕಮಿಟ್ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ರೆಪೊಸಿಟರಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.
- ಏಕೆ ಬಳಸಬೇಕು ಜೊತೆಗೆ ?
- ತೆಗೆದುಹಾಕಲು ಗುರುತಿಸಲಾದ ದೊಡ್ಡ ಬ್ಲಾಬ್ಗಳಂತಹ ಐಟಂಗಳ ಪಟ್ಟಿಗೆ ಆಜ್ಞೆಗಳನ್ನು ಅನ್ವಯಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಸಂಗ್ರಹಣೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು Git ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ದೊಡ್ಡ ಫೈಲ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುವುದು ಅತ್ಯಗತ್ಯ. BFG ಮತ್ತು Git ಫಿಲ್ಟರ್-ರೆಪೋದಂತಹ ಸಾಧನಗಳನ್ನು ಬಳಸುವುದು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸುಗಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಆದರೂ ಪ್ರತಿಯೊಂದೂ ವಿಶಿಷ್ಟವಾದ ಆಜ್ಞೆಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಹೊಂದಿದೆ. ಸುಧಾರಿತ ಆಯ್ಕೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಮತ್ತು ಪ್ರತಿ ಉಪಕರಣದ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯು ಸ್ವಚ್ಛವಾಗಿ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಉಳಿದಿದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು. ಡೇಟಾ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು ಗಮನಾರ್ಹ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುವ ಮೊದಲು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲು ಯಾವಾಗಲೂ ಮರೆಯದಿರಿ. ಈ ಪರಿಕರಗಳ ಜ್ಞಾನವನ್ನು ಕಾರ್ಯತಂತ್ರದ ಯೋಜನೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು ನಿಮ್ಮ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ ಅಭ್ಯಾಸಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಹೆಚ್ಚಿಸುತ್ತದೆ.