私は大規模な SVN リポジトリを使用しています。これは、数百のディレクトリ (すべてさまざまな深さ) と数千のファイル (すべてさまざまな種類) で構成されています。このリポジトリに含まれる数百の JavaScript ファイルを一括更新する必要があります。リポジトリ全体をダウンロードする代わりに、.js ファイルのみを選択的にチェックアウトしたいと考えていました。いろいろな方法を試してみましたが、うまくいきませんでした。これが私が思いついたものです...
# CHECKOUT INITIAL WORKING COPY
svn co https://myrepo.com/site-content --depth empty
# NAVIGATE TO WORKING COPY
cd site-content
# CHECKOUT FULL DIRECTORY TREE
env REPO=https://myrepo.com/site-content sh -c 'svn ls -R $REPO | grep "/\$" | xargs -n 1 svn co --depth empty $REPO'
# UPDATE WORKING COPY WITH .JS FILES
svn up `svn ls -R https://myrepo.com/site-content | grep .js$`
ターミナルに返される応答は、すべてが機能していることを示しているようですが、明らかにそうではありません. 完全なディレクトリ ツリーが残っていますが、.js ファイルはまったくありません。これが私の端末出力のサンプルです:
jakes-mac:working-copy jake$ svn co https://myrepo.com/site-content --depth empty
Checked out revision 21097.
jakes-mac:working-copy jake$ cd site-content
jakes-mac:site-content jake$ env REPO=https://myrepo.com/site-content sh -c 'svn ls -R $REPO | grep "/\$" | xargs -n 1 svn co --depth empty $REPO'
Checked out revision 21098.
Checked out revision 21098.
Checked out revision 21098.
Checked out revision 21098.
Checked out revision 21098.
...
Checked out revision 21099.
Checked out revision 21099.
Checked out revision 21099.
Checked out revision 21099.
Checked out revision 21099.
jakes-mac:site-content jake$ svn up `svn ls -R https://myrepo.com/site-content | grep .js$`
Updating '2013/js/_old/script.trees.bak.rev-a.js':
At revision 21100.
Updating '2013/js/_old/script.video.bak.rev-a.js':
At revision 21100.
Updating '2013/js/script.category.js':
At revision 21100.
Updating '2013/js/script.trees.js':
At revision 21100.
Updating '2013/js/script.video-v2.js':
At revision 21100.
Updating '2013/js/script.video.js':
At revision 21100.
Updating '2014/TreeGiveaway/js/script.sweeps.js':
At revision 21100.
Updating '2014/TreeGiveaway/js/validate-voting.js':
At revision 21100.
Updating '2014/js/collectionslider.js':
At revision 21100.
Updating '2014/js/difference.js':
At revision 21100.
Updating '2014/js/mobile.js':
At revision 21100.
Updating '2014/js/script.category.js':
At revision 21100.
Updating '2014/js/script.quicklight_inset.js':
At revision 21100.
Updating '2014/js/script.trees.js':
At revision 21100.
Updating '2014/js/script.trees.v3.js':
At revision 21100.
Updating '2014/js/script.trees_inset.js':
At revision 21100.
Updating '2014/js/script.trees_inset.new.js':
At revision 21100.
Updating '2014/slideshow/js/jquery.easing.min.js':
At revision 21100.
Updating '2014/slideshow/js/script.js':
At revision 21100.
Updating '2014/slideshow/js/supersized.3.2.7.js':
At revision 21100.
Updating '2014/slideshow/js/supersized.shutter.js':
At revision 21100.
Updating '2015/js/framework.fetchFeed.js':
At revision 21100.
Updating '2015/js/framework.goModal.js':
At revision 21100.
Updating '2015/js/frameworkForMobile.js':
At revision 21100.
Updating '2015/js/script.category.js':
At revision 21100.
Updating '2015/js/script.hs.js':
At revision 21100.
Updating '2015/js/script.shop-the-scene.js':
At revision 21100.
Updating '2015/js/script.trees.js':
At revision 21100.
Updating '2015/tree-finder/results.script-v2.js':
At revision 21100.
Updating '2015/tree-finder/results.script.js':
At revision 21100.
Updating '2015/tree-finder/wizard.script.js':
At revision 21100.
Updating 'current/js/holiday-decor.js':
At revision 21100.
Updating 'current/js/how-to.js':
At revision 21100.
Updating 'current/js/shop-the-style.js':
At revision 21100.
編集:
すべてが今働いています!最終的なコマンド リスト:
# CHECKOUT INITIAL WORKING COPY
svn co https://myrepo.com/site-content --depth empty
# NAVIGATE TO WORKING COPY
cd site-content
# CHECKOUT FULL DIRECTORY TREE
env REPO=https://myrepo.com/site-content sh -c 'svn ls -R $REPO | grep "/\$" | while read dir; do svn co --depth=empty $REPO/$dir $dir; done'
# UPDATE WORKING COPY WITH .JS FILES
svn up `svn ls -R https://myrepo.com/site-content | grep .js$`
# COMMIT ALL CHANGES TO REPO
svn commit `svn ls -R | grep .js$` -m "Bulk Updating Content"