如何检测神器中的重复工件

时间:2011-09-16 11:30:13

标签: artifactory

我知道artifactory使用基于校验和的存储,并且只存储一个工件的副本,即使我以不同的名称上传多个相同的副本。

由于我有许多版本匿名但可能相同的罐子的项目,我想知道是否有任何方法可以告诉我在多个ID下引用了哪些工件。

3 个答案:

答案 0 :(得分:4)

虽然Artifactory没有提供此信息的现有功能,但使用Artifactory的REST-API的小脚本实际上很容易实现。

例如,您可以编写一个将校验和映射到文件的树步行器(使用Folder Info resource)(可以使用File Info resource获取文件校验和)。

或者如果您使用专业版Artifactory,您可以使用File List resource

检索存储库中所有工件的列表

答案 1 :(得分:1)

这是针对PostGreSQL数据库运行的SQL。我还没有尝试过任何其他数据库。

select sha1_actual, node_name, node_path, repo, *
from nodes
where sha1_actual in 
(
    select sha1_actual 
    from nodes
    where node_type != 0
    group by sha1_actual
    having count(1) > 1
)
order by sha1_actual

答案 2 :(得分:0)

#!/bin/bash

#
# search in artifactory, lists duplicates angelos@unix.gr
#

search=$1

if [ "X$search" == "X" ]
then
    echo "$0 <search item>"
    exit 1
else
    search=`echo $search |sed -e 's/ /\%20/gi' `
    search="*${search}*"
fi

USER=`whoami`
PASS=${PASS:-somepass}
CREDS=${USER}:${PASS}
ARTIFACTORY=https://artifactory.somesite.com/artifactory

curl -s -u ${CREDS} -o search.txt ${ARTIFACTORY}/api/search/artifact\?name=${search}

echo "List of all uris is in search.txt"
echo "All instances of $search follow"
echo "---------------------------------"
grep $search search.txt | grep -v pom | awk '{ print $3}'  | xargs -i  basename {} | sort | uniq -c | sort -rn