....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 205.196.210.190  /  Your IP : 216.73.217.21
Web Server : Apache
System : Linux pdx1-shared-a2-06 6.6.116-grsec-jammy-dirty #1 SMP Sat Nov 8 00:02:42 UTC 2025 x86_64
User : dh_2vi232 ( 5939701)
PHP Version : 8.2.29
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /bin/salsa
#!/usr/bin/perl

=head1 NAME

salsa - tool to manipulate salsa repositories and group members

=head1 SYNOPSIS

  # salsa <command> <args>
  salsa whoami
  salsa search_project devscripts
  salsa search_project qa/qa
  salsa search_group js-team
  salsa search_group perl-team/modules
  salsa search_user yadd
  salsa push_repo . --group js-team --kgb --irc devscripts --tagpending
  salsa update_repo node-mongodb --group js-team --disable-kgb --desc \
        --desc-pattern "Package %p"
  salsa update_repo js-team/node-mongodb --kgb --irc debian-js
  salsa update_safe --all --desc --desc-pattern "Debian package %p" \
        --group js-team
  salsa checkout node-mongodb --group js-team
  salsa checkout js-team/node-mongodb
  salsa add_user developer foobar --group-id 2665
  salsa update_user maintainer foobar --group js-team
  salsa del_user foobar --group js-team
  salsa last_ci_status js-team/nodejs

=head1 DESCRIPTION

B<salsa> is a designed to create and configure repositories on
L<https://salsa.debian.org> and manage users of groups.

A Salsa token is required, except for search* commands, and must be set in
command line I<(see below)>, or in your configuration file I<(~/.devscripts)>:

  SALSA_TOKEN=abcdefghi

or

  SALSA_TOKEN=`cat ~/.token`

or

  SALSA_TOKEN_FILE=~/.dpt.conf

If you choose to link another file using SALSA_TOKEN_FILE, it must contain a
line with one of (no differences):

  <anything>SALSA_PRIVATE_TOKEN=xxxx
  <anything>SALSA_TOKEN=xxxx

This allows for example to use dpt(1) configuration file (~/.dpt.conf) which
contains:

  DPT_SALSA_PRIVATE_TOKEN=abcdefghi

=head1 COMMANDS

=head2 Managing users and groups

=over

=item B<join>

Request access to a group.

  salsa join js-team
  salsa join --group js-team
  salsa join --group-id 1234

=item B<add_user>

Add a user to a group.

  salsa --group js-group add_user guest foouser
  salsa --group-id 1234 add_user guest foouser
  salsa --group-id 1234 add_user maintainer 1245

First argument is the GitLab's access levels: guest, reporter, developer,
maintainer, owner.

=item B<del_user>

Remove a user from a group

  salsa --group js-team del_user foouser
  salsa --group-id=1234 del_user foouser

=item B<list_groups>

List sub groups of current one if group is set, groups of current user
else.

=item B<group>

Show group members.

  salsa --group js-team group
  salsa --group-id 1234 group

=item B<search_group>

Search for a group using given string. Shows group id and other
information.

  salsa search_group perl-team
  salsa search_group perl-team/modules
  salsa search_group 2666

=item B<search_user>

Search for a user using given string. Shows user id and other information.

  salsa search_user yadd

=item B<update_user>

Update user role in a group.

  salsa --group-id 1234 update_user guest foouser
  salsa --group js-team update_user maintainer 1245

First argument is the GitLab's access levels: guest, reporter, developer,
maintainer, owner.

=item B<whoami>

Gives information on the token owner

  salsa whoami

=back

=head2 Managing repositories

One of C<--group>, C<--group-id>, C<--user> or C<--user-id> is required to
manage repositories. If both are set, salsa warns and only
C<--user>/C<--user-id> is used. If none is given, salsa uses current user id
I<(token owner)>.

=over

=item B<check_repo>

Verify that repo(s) are well configured. It works exactly like B<update_repo>
except that it does not modify anything but just lists projects not well
configured with found errors.

  salsa --user yadd --tagpending --kgb --irc=devscripts check_repo test
  salsa --group js-team check_repo --all
  salsa --group js-team --rename-head check_repo test1 test2 test3

=item B<checkout> or B<co>

Clone repo in current dir. If directory already
exists, update local repo.

  salsa --user yadd co devscripts
  salsa --group js-team co node-mongodb
  salsa co js-team/node-mongodb

You can clone more than one repository or all repositories of a group or a
user:

  salsa --user yadd co devscripts autodep8
  salsa co yadd/devscripts js-team/npm
  salsa --group js-team co --all           # All js-team repos
  salsa co --all                           # All your repos

=item B<create_repo>

Create public empty project. If C<--group>/C<--group-id> is set, project is
created in group directory, else in user directory.

  salsa --user yadd create_repo test
  salsa --group js-team --kgb --irc-channel=devscripts create_repo test

=item B<del_repo>

Delete a repository.

=item B<fork>

Forks a project in group/user repository and set "upstream" to original
project. Example:

  $ salsa fork js-team/node-mongodb --verbose
  ...
  salsa.pl info: node-mongodb ready in node-mongodb/
  $ cd node-mongodb
  $ git remote --verbose show
  origin          git@salsa.debian.org:me/node-mongodb (fetch)
  origin          git@salsa.debian.org:me/node-mongodb (push)
  upstream        git@salsa.debian.org:js-team/node-mongodb (fetch)
  upstream        git@salsa.debian.org:js-team/node-mongodb (push)

For a group:

  salsa fork --group js-team user/node-foo

=item B<forks>

List forks of project(s).

  salsa forks qa/qa debian/devscripts

Project can be set using full path or using B<--group>/B<--group-id> or
B<--user>/B<--user-id>, else it is searched in current user namespace.

=item B<push>

Push relevant packaging refs to origin Git remote. To be run from packaging
working directory.

  salsa push

It pushes the following refs to the configured remote for the debian-branch or,
falling back, to the "origin" remote:

=over

=item "master" branch (or whatever is set to debian-branch in gbp.conf)

=item "upstream" branch (or whatever is set to upstream-branch in gbp.conf)

=item "pristine-tar" branch

=item tags named "debian/*" (or whatever is set to debian-tag in gbp.conf)

=item tags named "upstream/*" (or whatever is set to upstream-tag in gbp.conf)

=item all tags, if the package's source format is "3.0 (native)"

=back

=item B<ls> or B<list_repos>

Shows projects owned by user or group. If second
argument exists, search only matching projects

  salsa --group js-team list_repos
  salsa --user yadd list_repos foo*

=item B<last_ci_status> or B<ci>

Displays last continuous integration result. Use B<--verbose> to see
URL of pipeline when result isn't B<success>. Unless B<--no-fail> is set,
B<salsa last_ci_status> will stop on first "failed" status.

  salsa --group js-team last_ci_status --all --no-fail
  salsa --user yadd last_ci_status foo
  salsa last_ci_status js-team/nodejs

This commands returns the number of "failed" status found. "success" entries
are displayed using STDOUT while other are displayed I<(with details)> using
STDERR. Then you can easily see only failures using:

  salsa --group js-team last_ci_status --all --no-fail >/dev/null

=item B<merge_request>, B<mr>

Creates a merge request.

Suppose you created a fork using B<salsa fork>, modify some things in a new
branch using one commit and want to propose it to original project
I<(branch "master")>. You just have to launch this in source directory:

  salsa mr

Other example:

  salsa mr --mr-dst-project debian/foo --mr-dst-branch debian/master

or simply

  salsa mr debian/foo debian/master

Note that unless destination project has been set using command line,
B<salsa merge_request> will search it in the following order:

=over 4

=item using GitLab API: salsa will detect from where this project was forked

=item using "upstream" origin

=item else salsa will use source project as destination project

=back

To force salsa to use source project as destination project, you can use
"same":

  salsa mr --mr-dst-project same
  # or
  salsa mr same

New merge request will be created using last commit title and description.

See B<--mr-*> options for more.

=item B<merge_requests>, B<mrs>

List opened merge requests for project(s)

  salsa mrs qa/qa debian/devscripts

Project can be set using full path or using B<--group>/B<--group-id> or
B<--user>/B<--user-id>, else it is searched in current user namespace.

=item B<protect_branch>

Protect/unprotect a branch.

=over

=item Set protection

  #                                    project      branch merge push
  salsa --group js-team protect_branch node-mongodb master m     d

"merge" and "push" can be one of:

=over

=item B<o>, B<owner>: owner only

=item B<m>, B<maintainer>: B<o> + maintainers allowed

=item B<d>, B<developer>: B<m> + developers allowed

=item B<r>, B<reporter>: B<d> + reporters allowed

=item B<g>, B<guest>: B<r> + guest allowed

=back

=item Unprotect

  salsa --group js-team protect_branch node-mongodb master no

=back

=item B<protected_branches>

List protected branches

  salsa --group js-team protected_branches node-mongodb

=item B<push_repo>

Create a new project from a local Debian source directory configured with
git.

B<push_repo> executes the following steps:

=over

=item gets project name using debian/changelog file;

=item launches B<git remote add upstream ...>;

=item launches B<create_repo>;

=item pushes local repo.

=back

Examples:

  salsa --user yadd push_repo ./test
  salsa --group js-team --kgb --irc-channel=devscripts push_repo .

=item B<rename_branch>

Rename branch given in B<--source-branch> with name given in B<--dest-branch>.
You can use B<--no-fail> and B<--all> options here.

=item B<search>, B<search_project>, B<search_repo>

Search for a project using given string. Shows name, owner id and other
information.

  salsa search devscripts
  salsa search debian/devscripts
  salsa search 18475

=item B<update_repo>

Configure repo(s) using parameters given to command line.
A repo name has to be given unless B<--all> is set. Prefer to use
B<update_safe>.

  salsa --user yadd --tagpending --kgb --irc=devscripts update_repo test
  salsa --group js-team update_repo --all
  salsa --group js-team --rename-head update_repo test1 test2 test3
  salsa update_repo js-team/node-mongodb --kgb --irc debian-js

By default when using B<--all>, salsa will fail on first error. If you want
to continue, set B<--no-fail>. In this case, salsa will display a warning for
each project that has fail but continue with next project. Then to see full
errors, set B<--verbose>.

=item B<update_safe>

Launch B<check_repo> and ask before launching B<update_repo> (unless B<--yes>).

  salsa --user yadd --tagpending --kgb --irc=devscripts update_safe test
  salsa --group js-team update_safe --all
  salsa --group js-team --rename-head update_safe test1 test2 test3
  salsa update_safe js-team/node-mongodb --kgb --irc debian-js

=back

=head2 Other

=over

=item B<purge_cache>

Empty local cache.

=back

=head1 OPTIONS

=head2 General options

=over

=item B<-C>, B<--chdir>

Change directory before launching command

  salsa -C ~/debian co debian/libapache2-mod-fcgid

=item B<--cache-file>

File to store cached values. Default to B<~/.cache/salsa.json>. An empty value
disables cache.

C<.devscripts> value: B<SALSA_CACHE_FILE>

=item B<--no-cache>

Disable cache usage. Same as B<--cache-file ''>

=item B<--conffile>, B<--conf-file>

Add or replace default configuration files (C</etc/devscripts.conf> and
C<~/.devscripts>). This can only be used as the first option given on the
command-line.

=over

=item replace:

  salsa --conf-file test.conf <command>...
  salsa --conf-file test.conf --conf-file test2.conf  <command>...

=item add:

  salsa --conf-file +test.conf <command>...
  salsa --conf-file +test.conf --conf-file +test2.conf  <command>...

If one B<--conf-file> has no C<+>, default configuration files are ignored.

=back

=item B<--no-conf>, B<--noconf>

Don't read any configuration files. This can only be used as the first option
given on the command-line.

=item B<--debug>

Enable debugging output

=item B<--group>

Team to use. Use C<salsa search_group name> to find it.

If you want to use a subgroup, you have to set its full path:

  salsa --group perl-team/modules/packages check_repo lemonldap-ng

C<.devscripts> value: B<SALSA_GROUP>

Be careful when you use B<SALSA_GROUP> in your C<.devscripts> file. Every
B<salsa> command will be executed in group space, for example if you want to
propose a little change in a project using B<salsa fork> + B<salsa mr>, this
"fork" will be done in group space unless you set a B<--user>/B<--user-id>.
Prefer to use an alias in your C<.bashrc> file. Example:

  alias jsteam_admin="salsa --group js-team"

or

  alias jsteam_admin="salsa --conf-file ~/.js.conf

or to use both .devscripts and .js.conf:

  alias jsteam_admin="salsa --conf-file +~/.js.conf

then you can fix B<SALSA_GROUP> in C<~/.js.conf>

To enable bash completion for your alias, add this in your .bashrc file:

  _completion_loader salsa
  complete -F _salsa_completion jsteam_admin

=item B<--group-id>

Group id to use. Use C<salsa search_group name> to find it.

C<.devscripts> value: B<SALSA_GROUP_ID>

Be careful when you use B<SALSA_GROUP_ID> in your C<.devscripts> file. Every
B<salsa> command will be executed in group space, for example if you want to
propose a little change in a project using B<salsa fork> + B<salsa mr>, this
"fork" will be done in group space unless you set a B<--user>/B<--user-id>.
Prefer to use an alias in your C<.bashrc> file. Example:

  alias jsteam_admin="salsa --group-id 2666"

or

  alias jsteam_admin="salsa --conf-file ~/.js.conf

then you can fix B<SALSA_GROUP_ID> in C<~/.js.conf>

=item B<--help>: displays this manpage

=item B<-i>, B<--info>

Prompt before sensible changes.

C<.devscripts> value: B<SALSA_INFO> (yes/no)

=item B<--path>

Repo path. Default to group or user path.

C<.devscripts> value: B<SALSA_REPO_PATH>

=item B<--token>

Token value (see above).

=item B<--token-file>

File to find token (see above).

=item B<--user>

Username to use. If neither B<--group>, B<--group-id>, B<--user> or B<--user-id>
is set, salsa uses current user id (corresponding to salsa private token).

=item B<--user-id>

User id to use. Use C<salsa search_user name> to find one. If neither
B<--group>, B<--group-id>, B<--user> or B<--user-id> is set, salsa uses current
user id (corresponding to salsa private token).

C<.devscripts> value: B<SALSA_USER_ID>

=item B<--verbose>

Enable verbose output.

=item B<--yes>

Never ask for consent.

C<.devscripts> value: B<SALSA_YES> (yes/no)

=back

=head2 List/search repo options

=over

=item B<--archived> B<--no-archived>

Instead of looking to active projects, list or search in archived projects.
Note that you can't have both archived and unarchived projects in the same
request. Default: no I<(ie --no-archived)>.

C<.devscripts> value: B<SALSA_ARCHIVED> (yes/no)

=back

=head2 Update/create repo options

=over

=item B<--all>

When set, all project of group/user are affected by command.

=over

=item B<--skip>: ignore project with B<--all>. Example:

  salsa update_repo --tagpending --all --skip qa --skip devscripts

C<.devscripts> value: B<SALSA_SKIP>. To set multiples values, use spaces.
Example

  SALSA_SKIP=qa devscripts

=item B<--skip-file>: ignore projects in this file (1 project per line)

  salsa update_repo --tagpending --all --skip-file ~/.skip

C<.devscripts> value: B<SALSA_SKIP_FILE>

=back

=item B<--ci-config-path>

Configure configuration file path of GitLab CI. Default: empty. Example:

  salsa update_safe --ci-config-path debian/.gitlab-ci.yml debian/devscripts

C<.devscripts> value: B<SALSA_CI_CONFIG_PATH>

=item B<--desc> B<--no-desc>

Configure repo description using pattern given in B<desc-pattern>

C<.devscripts> value: B<SALSA_DESC> (yes/no)

=item B<--desc-pattern>

Repo description pattern. Default to "Debian package %p". "%p" is replaced by
repo name, while "%P" is replaced by repo name given in command (may contains
full path).

C<.devscripts> value: B<SALSA_DESC_PATTERN>

=item B<--email>, B<--no-email>, B<--disable-email>

Enable, ignore or disable email-on-push.

C<.devscripts> value: B<SALSA_EMAIL> (yes/ignore/no, default: ignore)

=item B<--email-recipient>

Email-on-push recipient. Can be multi valued:

  $ salsa update_safe myrepo \
        --email-recipient foo@foobar.org \
        --email-recipient bar@foobar.org

If recipient value contains "%p", it is replaced by project name.

C<.devscripts> value: B<SALSA_EMAIL_RECIPIENTS> (use spaces to separate
multiples recipients)

=item B<--enable-issues>, B<--no-enable-issues>, B<--disable-issues>,
B<--no-disable-issues>

Enable, ignore or disable issues.

C<.devscripts> values: B<SALSA_ENABLE_ISSUES> (yes/ignore/no, default: ignore)

=item B<--enable-mr>, B<--no-enable-mr>, B<--disable-mr>, B<--no-disable-mr>

Enable, ignore or disable merge requests.

C<.devscripts> values: B<SALSA_ENABLE_MR> (yes/ignore/no, default: ignore)

=item B<--irc-channel>

IRC channel for KGB or Irker. Can be used more than one time only with
B<--irker>.

B<Important>: channel must not include the first "#". If salsa finds a channel
starting with "#", it will consider that the channel starts with 2 "#"!

C<.devscript> value: B<SALSA_IRC_CHANNEL>.

Multiple values must be space separated.

Since configuration files are read using B<sh>, be careful when using "#": you
must enclose the channel with quotes, else B<sh> will consider it as a comment
and will ignore this value.

=item B<--irker>, B<--no-irker>, B<--disable-irker>

Enable, ignore or disable Irker service

C<.devscripts> values: B<SALSA_IRKER> (yes/ignore/no, default: ignore)

=item B<--irker-host>

Irker host. Default: ruprecht.snow-crash.org

C<.devscripts> value: B<SALSA_IRKER_HOST>

=item B<--irker-port>

Irker port. Default: empty (default value)

C<.devscripts> value: B<SALSA_IRKER_PORT>

=item B<--kgb>, B<--no-kgb>, B<--disable-kgb>

Enable, ignore or disable KGB webhook.

C<.devscripts> value: B<SALSA_KGB> (yes/ignore/no, default: ignore)

=item B<--kgb-options>

List of KGB enabled options (comma separated). Default: issues_events,
merge_requests_events, note_events, pipeline_events, push_events,
tag_push_events, wiki_page_events, enable_ssl_verification

  $ salsa update_safe debian/devscripts --kgb --irc-channel devscripts \
    --kgb-options 'merge_requests_events,issues_events,enable_ssl_verification'

List of available options: confidential_comments_events,
confidential_issues_events, confidential_note_events, enable_ssl_verification,
issues_events, job_events, merge_requests_events, note_events, pipeline_events,
tag_push_events, wiki_page_events

C<.devscripts> value: B<SALSA_KGB_OPTIONS>

=item B<--no-fail>

Don't stop on error when using B<update_repo> with B<--all>.

C<.devscripts> value: B<SALSA_NO_FAIL> (yes/no)

=item B<--rename-head>, B<--no-rename-head>

Rename HEAD branch given by B<--source-branch> into B<--dest-branch> and change
"default branch" of project. Works only with B<update_repo>.

C<.devscripts> value: B<SALSA_RENAME_HEAD> (yes/no)

=over

=item B<--source-branch>: default "master"

C<.devscripts> value: B<SALSA_SOURCE_BRANCH>

=item B<--dest-branch>: default "debian/master"

C<.devscripts> value: B<SALSA_DEST_BRANCH>

=back

=item B<--tagpending>, B<--no-tagpending>, B<--disable-tagpending>

Enable, ignore or disable "tagpending" webhook.

C<.devscripts> value: B<SALSA_TAGPENDING> (yes/ignore/no, default: ignore)

=back

=head2 Merge requests options

=over

=item B<--mr-title>

Title for merge request. Default: last commit title.

=item B<--mr-desc>

Description of new MR. Default:

=over

=item empty if B<--mr-title> is set

=item last commit description if any

=back

=item B<--mr-dst-branch> (or second command line argument)

Destination branch. Default to "master".

=item B<--mr-dst-project> (or first command line argument)

Destination project. Default: project from which the current project was
forked; or, if not found, "upstream" value found using
B<git remote --verbose show>; or using source project.

If B<--mr-dst-project> is set to B<same>, salsa will use source project as
destination.

=item B<--mr-src-branch>

Source branch. Default: current branch.

=item B<--mr-src-project>

Source project. Default: current project found using
B<git remote --verbose show>.

=item B<--mr-allow-squash>, B<--no-mr-allow-squash>

Allow upstream project to squash your commits, this is the default.

C<.devscripts> value: B<SALSA_MR_ALLOW_SQUASH> (yes/no)

=item B<--mr-remove-source-branch>, B<--no-mr-remove-source-branch>

Remove source branch if merge request is accepted. Default: no.

C<.devscripts> value: B<SALSA_MR_REMOVE_SOURCE_BRANCH> (yes/no)

=back

=head2 Options to manage other Gitlab instances

=over

=item B<--api-url>

GitLab API. Default: L<https://salsa.debian.org/api/v4>.

C<.devscripts> value: B<SALSA_API_URL>

=item B<--git-server-url>

Default to "git@salsa.debian.org:"

C<.devscripts> value: B<SALSA_GIT_SERVER_URL>

=item B<--irker-server-url>

Default to "ircs://irc.oftc.net:6697/"

C<.devscripts> value: B<SALSA_IRKER_SERVER_URL>

=item B<--kgb-server-url>

Default to L<http://kgb.debian.net:9418/webhook/?channel=>

C<.devscripts> value: B<SALSA_KGB_SERVER_URL>

=item B<--tagpending-server-url>

Default to L<https://webhook.salsa.debian.org/tagpending/>

C<.devscripts> value: B<SALSA_TAGPENDING_SERVER_URL>

=back

=head3 Configuration file example

Example to use salsa with L<https://gitlab.ow2.org> (group "lemonldap-ng"):

  SALSA_TOKEN=`cat ~/.ow2-gitlab-token`
  SALSA_API_URL=https://gitlab.ow2.org/api/v4
  SALSA_GIT_SERVER_URL=git@gitlab.ow2.org:
  SALSA_GROUP_ID=34

Then to use it, add something like this in your C<.bashrc> file:

  alias llng_admin='salsa --conffile ~/.salsa-ow2.conf'

=head1 SEE ALSO

B<dpt-salsa>

=head1 AUTHOR

Xavier Guimard E<lt>yadd@debian.orgE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2018, Xavier Guimard E<lt>yadd@debian.orgE<gt>

It contains code formerly found in L<dpt-salsa> I<(pkg-perl-tools)>
copyright 2018, gregor herrmann E<lt>gregoa@debian.orgE<gt>.

This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see L<http://www.gnu.org/licenses/>.

=cut

use Devscripts::Salsa;

exit Devscripts::Salsa->new->run;


Youez - 2016 - github.com/yon3zu
LinuXploit