1

私は大規模な 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"
4

1 に答える 1

2

「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'
                                             ^^^^^

例の出力を参照してくださいsvn info 2014/js/


A <filename>「...すべてが機能したことを示しているようです」-たとえば、次のような行が表示されないため、そうではありません

Updating '2014/js/script.trees.v3.js':
A    2014/js/script.trees.v3.js

次のようなことを試してください:

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'
于 2016-09-29T13:23:09.700 に答える