isaacs / github

Just a place to track issues and feature requests that I have for github
2.21k stars 129 forks source link

GitHub Releases tar files API is indeterministic #1483

Open machinekoder opened 5 years ago

machinekoder commented 5 years ago

We've been seeing a problem in GitHub Releases in the last month where after unpacking the tarball, the top-level directory name has changed in the same release downloaded just a week earlier. These are old releases that should not change.

An example is the ros-gbp/bond_core repo bond_core v. 1.8.1-0 release, directly downloaded from here. For the last year, the tarball unpacks into the directory bond_core-release-release-kinetic-bond_core-1.8.1-0/, but a few weeks ago it began unpacking into catkin-release-release-kinetic-catkin/, without the release version appended.

This change isn't consistent, since other ros-gbp/bond_core v. 1.8.1-0 releases are unchanged, with the version still appended to the base directory.

We have found this problem not just in ros-gbp/bond_core, but in dozens of releases from several repos.

New cases crop up every time we run our scripts, every few days or so. In a few cases, the base directory version was dropped, and a few days later re-added!

Others are seeing the same problem. There's more discussion and details in an issue at thevcstools/vcstools repo here.

Thank you for prompt attention to this problem.

zultron commented 5 years ago

Here's a list of such packages that changed under our scripts. This is a couple of weeks old, and since then, some new packages have cropped up with this problem, and some of the packages in this list have magically reverted back again.

https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/bond/1.8.1-0.tar.gz
https://github.com/ros-gbp/catkin-release/archive/release/kinetic/catkin/0.7.11-0.tar.gz
https://github.com/ros-gbp/class_loader-release/archive/release/kinetic/class_loader/0.3.9-0.tar.gz
https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2/0.5.17-0.tar.gz
https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_eigen/0.5.17-0.tar.gz
https://github.com/ros-gbp/opencv3-release/archive/release/kinetic/opencv3/3.3.1-0.tar.gz
https://github.com/smits/orocos-kdl-release/archive/release/kinetic/orocos_kdl/1.3.1-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/mk/1.13.6-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/ros/1.13.6-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbash/1.13.6-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosboost_cfg/1.13.6-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbuild/1.14.3-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosclean/1.14.3-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslang/1.14.3-0.tar.gz
https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslib/1.14.3-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/ros_comm/1.12.12-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag_storage/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosconsole/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roscpp/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosgraph/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslz4/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmaster/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosout/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosparam/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rospy/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosservice/1.12.12-0.tar.gz
https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/xmlrpcpp/1.12.13-0.tar.gz
https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/rosgraph_msgs/1.11.2-0.tar.gz
https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/cpp_common/0.6.9-0.tar.gz
https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_core/0.6.7-0.tar.gz
https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_serialization/0.6.9-0.tar.gz
https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_traits/0.6.9-0.tar.gz
https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/rostime/0.6.9-0.tar.gz
https://github.com/ros-gbp/roslint-release/archive/release/kinetic/roslint/0.11.0-0.tar.gz
chrisl8 commented 5 years ago

From my testing over the past few days, the list changes daily, making it impossible to keep builds up to date without "fixing things up" by hand every time.

machinekoder commented 5 years ago

In the meantime, this script here fixes a .rosintall automatically https://gist.github.com/machinekoder/49ff3aa0734b4b2ec99ec86586cb40c1