ಕ್ಲೋನಿಂಗ್ ಉಪಕೋಶಗಳು: ಒಂದು ತ್ವರಿತ ಅವಲೋಕನ
Git ನೊಂದಿಗೆ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣವನ್ನು ನಿರ್ವಹಿಸುವಾಗ, SVN ನಂತಹ ಹಳೆಯ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಹೋಲಿಸಿದರೆ ವಿಭಿನ್ನ ಸನ್ನಿವೇಶಗಳಿಗೆ ವಿಭಿನ್ನ ವಿಧಾನಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ರೆಪೊಸಿಟರಿಯ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಆಯ್ದ ಕ್ಲೋನ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವು ವಿವಿಧ ಅಭಿವೃದ್ಧಿ ಕೆಲಸದ ಹರಿವುಗಳಿಗೆ ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಪ್ರಾಜೆಕ್ಟ್ ರಚನೆಗಳು ಸಂಕೀರ್ಣವಾದಾಗ ಅಥವಾ ನೀವು ರೆಪೊಸಿಟರಿಯ ಒಂದು ಭಾಗದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕಾದಾಗ ಈ ವೈಶಿಷ್ಟ್ಯವು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
SVN ನಲ್ಲಿ, ರೆಪೊಸಿಟರಿಯಿಂದ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಬೇರೆ ಬೇರೆ ಸ್ಥಳಗಳಿಗೆ ಚೆಕ್ಔಟ್ ಮಾಡುವುದು ಸರಳವಾಗಿದೆ. ಆದಾಗ್ಯೂ, Git ರೆಪೊಸಿಟರಿ ಡೇಟಾವನ್ನು ವಿಭಿನ್ನವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ, 'svn co' ನಂತಹ SVN ಆದೇಶಗಳಿಗೆ ನೇರ ಸಮಾನತೆಯನ್ನು ಕಡಿಮೆ ಸ್ಪಷ್ಟಗೊಳಿಸುತ್ತದೆ. ವಿರಳ ಚೆಕ್ಔಟ್ ಮತ್ತು ಇತರ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು Git ಇದೇ ರೀತಿಯ ಫಲಿತಾಂಶಗಳನ್ನು ಹೇಗೆ ಸಾಧಿಸಬಹುದು ಎಂಬುದನ್ನು ಈ ಮಾರ್ಗದರ್ಶಿ ಅನ್ವೇಷಿಸುತ್ತದೆ.
| ಆಜ್ಞೆ | ವಿವರಣೆ |
|---|---|
| git init | ಹೊಸ Git ರೆಪೊಸಿಟರಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಎಲ್ಲಾ ಅಗತ್ಯ ಮೆಟಾಡೇಟಾದೊಂದಿಗೆ ಆರಂಭಿಕ .git ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸುತ್ತದೆ. |
| git remote add -f | ನಿಮ್ಮ Git ಕಾನ್ಫಿಗರೇಶನ್ಗೆ ಹೊಸ ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ತಕ್ಷಣವೇ ಅದನ್ನು ಪಡೆಯುತ್ತದೆ. |
| git config core.sparseCheckout true | ವಿರಳ-ಚೆಕ್ಔಟ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ, ಇದು ರೆಪೊಸಿಟರಿಯ ಭಾಗಶಃ ಚೆಕ್ಔಟ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ. |
| echo "finisht/*" >> .git/info/sparse-checkout | ಯಾವ ಉಪ ಡೈರೆಕ್ಟರಿಯನ್ನು ಪರಿಶೀಲಿಸಬೇಕೆಂದು ವ್ಯಾಖ್ಯಾನಿಸಲು ವಿರಳ-ಚೆಕ್ಔಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗೆ 'finisht/*' ಮಾರ್ಗವನ್ನು ಸೇರಿಸುತ್ತದೆ. |
| git pull origin master | ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಮಾತ್ರ ಹಿಂಪಡೆಯಲು ವಿರಳ-ಚೆಕ್ಔಟ್ ನಿಯಮಗಳನ್ನು ಬಳಸಿಕೊಂಡು 'ಮೂಲ' ರಿಮೋಟ್ನಿಂದ 'ಮಾಸ್ಟರ್' ಶಾಖೆಯನ್ನು ಎಳೆಯುತ್ತದೆ. |
| git sparse-checkout set | ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಜನಸಂಖ್ಯೆ ಮಾಡಬೇಕಾದ ಮಾರ್ಗಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ. |
Git ವಿರಳ ಚೆಕ್ಔಟ್ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ ವರ್ಕ್ಫ್ಲೋ ವಿವರಿಸಲಾಗುತ್ತಿದೆ
ಒದಗಿಸಲಾದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು Git ರೆಪೊಸಿಟರಿಯಿಂದ ನಿರ್ದಿಷ್ಟ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಕ್ಲೋನ್ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, SVN ನೊಂದಿಗೆ ಹಿಂದೆ ಲಭ್ಯವಿರುವ ನಡವಳಿಕೆಯನ್ನು ಅನುಕರಿಸುತ್ತದೆ. ರೆಪೊಸಿಟರಿಯ ಕೆಲವು ಭಾಗಗಳು ಮಾತ್ರ ಅಗತ್ಯವಿರುವ ಪರಿಸರದಲ್ಲಿ, ಇದು ಪಡೆದ ಡೇಟಾವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ದಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ. ಮೊದಲ ಸ್ಕ್ರಿಪ್ಟ್ ಸಂಯೋಜನೆಯನ್ನು ಬಳಸುತ್ತದೆ git init, git remote add -f, ಮತ್ತು git config core.sparseCheckout true ಹೊಸ Git ರೆಪೊಸಿಟರಿಯನ್ನು ಪ್ರಾರಂಭಿಸಲು, ರಿಮೋಟ್ ಮೂಲವನ್ನು ಸೇರಿಸಿ, ಮತ್ತು ರೆಪೊಸಿಟರಿ ವಿಷಯಗಳ ಆಯ್ದ ಕ್ಲೋನಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸುವ ವಿರಳ ಚೆಕ್ಔಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.
ತರುವಾಯ, 'ಫಿನಿಶ್ಟ್/*' ನಂತಹ ಮಾರ್ಗಗಳನ್ನು ಈ ಮೂಲಕ ವಿರಳ-ಚೆಕ್ಔಟ್ ಕಾನ್ಫಿಗರೇಶನ್ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ echo ಆಜ್ಞೆಗಳು, ನಿರ್ದಿಷ್ಟ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಮಾತ್ರ ಪಡೆದುಕೊಳ್ಳಲು Git ಅನ್ನು ನಿರ್ದೇಶಿಸುತ್ತದೆ. ಆಜ್ಞೆ git pull origin master ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಯ ಮಾಸ್ಟರ್ ಶಾಖೆಯಿಂದ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಮಾತ್ರ ಎಳೆಯಲು ಬಳಸಲಾಗುತ್ತದೆ. ಎರಡನೇ ಸ್ಕ್ರಿಪ್ಟ್ ಹತೋಟಿ git sparse-checkout set ಕಮಾಂಡ್, ಇತ್ತೀಚಿನ Git ಆವೃತ್ತಿಗಳಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಹೆಚ್ಚು ಸುವ್ಯವಸ್ಥಿತ ವಿಧಾನವು ಡೈರೆಕ್ಟರಿ ಪಥಗಳನ್ನು ನೇರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ, ಪರಿಶೀಲಿಸಿದ ವಿಷಯದ ಮೇಲೆ ಸ್ಪಷ್ಟತೆ ಮತ್ತು ನಿಯಂತ್ರಣವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.
Git ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಕ್ಲೋನಿಂಗ್ಗಾಗಿ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುವುದು
ಬ್ಯಾಷ್ ಮತ್ತು ಜಿಟ್ ಕಮಾಂಡ್ಗಳನ್ನು ಬಳಸುವುದು
mkdir specific-dir-clonecd specific-dir-clonegit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "finisht/*" >> .git/info/sparse-checkoutgit pull origin mastercd ..mkdir another-specific-dircd another-specific-dirgit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "static/*" >> .git/info/sparse-checkoutgit pull origin master
Git ನಲ್ಲಿ ಉಪ ಡೈರೆಕ್ಟರಿಗಳಿಗಾಗಿ ವಿರಳ ಚೆಕ್ಔಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತಿದೆ
Git Sparse-Checkout ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸುವುದು
git clone --filter=blob:none --no-checkout https://your-repository-url.git repo-dircd repo-dirgit sparse-checkout init --conegit sparse-checkout set finishtgit checkoutcd ..git clone --filter=blob:none --no-checkout https://your-repository-url.git another-repo-dircd another-repo-dirgit sparse-checkout init --conegit sparse-checkout set staticgit checkout
ಡೈರೆಕ್ಟರಿ-ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ Git ನಲ್ಲಿ ಸುಧಾರಿತ ತಂತ್ರಗಳು
Git ನಲ್ಲಿ ಉಪ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಕ್ಲೋನಿಂಗ್ ಮಾಡುವ ಮೂಲ ವಿಧಾನಗಳ ಜೊತೆಗೆ, ಡೆವಲಪರ್ಗಳು ಅನೇಕ ಯೋಜನೆಗಳೊಂದಿಗೆ ದೊಡ್ಡ ರೆಪೊಸಿಟರಿಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತಾರೆ ಎಂಬುದನ್ನು ಮತ್ತಷ್ಟು ಉತ್ತಮಗೊಳಿಸುವ ಸುಧಾರಿತ ತಂತ್ರಗಳಿವೆ. ಅಂತಹ ಒಂದು ವಿಧಾನವು ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ git submodule. ಈ ಆಜ್ಞೆಯು Git ರೆಪೊಸಿಟರಿಯನ್ನು ಇತರ Git ರೆಪೊಸಿಟರಿಗಳನ್ನು ಸಬ್ ಮಾಡ್ಯೂಲ್ಗಳಾಗಿ ಸೇರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದನ್ನು ಪೋಷಕರೊಂದಿಗೆ ಕ್ಲೋನ್ ಮಾಡಬಹುದು ಆದರೆ ಪ್ರತ್ಯೇಕವಾಗಿ ನಿರ್ವಹಿಸಬಹುದು. ರೆಪೊಸಿಟರಿಯ ವಿವಿಧ ಭಾಗಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು ಆದರೆ ಇನ್ನೂ ಕೇಂದ್ರ ಭಂಡಾರದಿಂದ ನಿಯಂತ್ರಿಸಬೇಕಾದಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಮತ್ತೊಂದು ಸುಧಾರಿತ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ ಬಳಕೆ git filter-branch ಜೊತೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ git subtree. ಈ ಸಂಯೋಜನೆಯು ಉಪ ಡೈರೆಕ್ಟರಿಯನ್ನು ಅದರ ಇತಿಹಾಸವನ್ನು ಸಂರಕ್ಷಿಸುವಾಗ ಹೊಸ, ಪ್ರತ್ಯೇಕ Git ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಹೊರತೆಗೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಯೋಜನೆಯು ತನ್ನದೇ ಆದ ಅಸ್ತಿತ್ವವಾಗಿ ಬೆಳೆಯುವ ಮತ್ತು ಅದರ ಐತಿಹಾಸಿಕ ಸಂದರ್ಭವನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ ಮುಖ್ಯ ಭಂಡಾರದಿಂದ ಹೊರಹಾಕಬೇಕಾದ ಸಂದರ್ಭಗಳಿಗೆ ಇದು ಸೂಕ್ತವಾಗಿದೆ.
ಅಗತ್ಯ Git ಉಪ ಡೈರೆಕ್ಟರಿ ನಿರ್ವಹಣೆ FAQ ಗಳು
- ನಾನು Git ರೆಪೊಸಿಟರಿಯಿಂದ ಕೇವಲ ಒಂದು ಡೈರೆಕ್ಟರಿಯನ್ನು ಕ್ಲೋನ್ ಮಾಡಬಹುದೇ?
- ಹೌದು, ಮುಂತಾದ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸುವುದು git sparse-checkout ಅಥವಾ ಆ ಡೈರೆಕ್ಟರಿಯ ವಿಷಯಗಳೊಂದಿಗೆ ಪ್ರತ್ಯೇಕ ಶಾಖೆಯನ್ನು ರಚಿಸುವುದು.
- Git ನಲ್ಲಿ ವಿರಳ ಚೆಕ್ಔಟ್ ಎಂದರೇನು?
- ಸಂಪೂರ್ಣ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡದೆಯೇ ರೆಪೊಸಿಟರಿಯಿಂದ ಕೆಲವು ಫೋಲ್ಡರ್ಗಳು ಅಥವಾ ಫೈಲ್ಗಳನ್ನು ಆಯ್ದವಾಗಿ ಪರಿಶೀಲಿಸಲು ವಿರಳ ಚೆಕ್ಔಟ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಉಪ ಡೈರೆಕ್ಟರಿಗಾಗಿ ನಾನು ಸಬ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು?
- ಇದರೊಂದಿಗೆ ಉಪಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸೇರಿಸಿ git submodule add ಬಯಸಿದ ರೆಪೊಸಿಟರಿ ಮತ್ತು ಮಾರ್ಗವನ್ನು ಸೂಚಿಸುತ್ತದೆ.
- ನಾನು ಉಪ ಡೈರೆಕ್ಟರಿಯನ್ನು ಹೊಸ ರೆಪೊಸಿಟರಿಯಾಗಿ ಪ್ರತ್ಯೇಕಿಸಬಹುದೇ?
- ಹೌದು, ಬಳಸುವುದು git subtree split ಕೇವಲ ಉಪ ಡೈರೆಕ್ಟರಿಯ ಇತಿಹಾಸದೊಂದಿಗೆ ಹೊಸ ಶಾಖೆಯನ್ನು ರಚಿಸಲು, ಅದನ್ನು ನಂತರ ಕ್ಲೋನ್ ಮಾಡಬಹುದು.
- ಜಿಟ್ ಸಬ್ಟ್ರೀ ಮತ್ತು ಜಿಟ್ ಸಬ್ಟ್ರೀ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೇನು?
- ಉಪ ಮಾಡ್ಯೂಲ್ಗಳು ಪ್ರತ್ಯೇಕ ರೆಪೊಸಿಟರಿಗಳನ್ನು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗೆ ಅವಲಂಬನೆಗಳಾಗಿ ಲಿಂಕ್ ಮಾಡುತ್ತವೆ, ಆದರೆ ಸಬ್ಟ್ರೀಗಳು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗೆ ಮತ್ತೊಂದು ರೆಪೊಸಿಟರಿಯನ್ನು ವಿಲೀನಗೊಳಿಸುತ್ತವೆ ಮತ್ತು ಅದನ್ನು ಮತ್ತೆ ವಿಭಜಿಸುವ ಸಾಮರ್ಥ್ಯ ಹೊಂದಿವೆ.
Git ನಲ್ಲಿ ಡೈರೆಕ್ಟರಿ-ನಿರ್ದಿಷ್ಟ ಕ್ಲೋನಿಂಗ್ ಕುರಿತು ಅಂತಿಮ ಆಲೋಚನೆಗಳು
ವೈಯಕ್ತಿಕ ಡೈರೆಕ್ಟರಿಗಳಿಗಾಗಿ SVN ನ ಚೆಕ್ಔಟ್ಗೆ ಸಮಾನವಾದ ನೇರ ಆಜ್ಞೆಯನ್ನು Git ಒದಗಿಸದಿದ್ದರೂ, ವಿರಳ ಚೆಕ್ಔಟ್, ಸಬ್ಮಾಡ್ಯೂಲ್ಗಳು ಮತ್ತು ಸಬ್ಟ್ರೀ ತಂತ್ರಗಳ ಬಳಕೆಯು ದೃಢವಾದ ಪರ್ಯಾಯಗಳನ್ನು ನೀಡುತ್ತವೆ. ಈ ವಿಧಾನಗಳು ಕೇವಲ ಪುನರಾವರ್ತಿಸುವುದಿಲ್ಲ ಆದರೆ ಹಳೆಯ ಆವೃತ್ತಿಯ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಗಳು ಒದಗಿಸಿದ ಕಾರ್ಯವನ್ನು ಹೆಚ್ಚಾಗಿ ಹೆಚ್ಚಿಸುತ್ತವೆ. SVN ನಿಂದ ಪರಿವರ್ತನೆ ಅಥವಾ Git ನಲ್ಲಿ ಸಂಕೀರ್ಣ ಯೋಜನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಡೆವಲಪರ್ಗಳಿಗೆ, ಈ ತಂತ್ರಗಳನ್ನು ಮಾಸ್ಟರಿಂಗ್ ಮಾಡುವುದರಿಂದ ಅವರ ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಗಮಗೊಳಿಸಬಹುದು.